Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Оптимизация кода
Форумы портала PHP.SU » » Вопросы новичков » Оптимизация кода

Страниц (1): [1]
 

1. newbie guy - 23 Ноября, 2015 - 12:35:46 - перейти к сообщению
Есть ли какие-то правила по оптимизации кода?

И, можно ли выводить контент в такой способ?
PHP:
скопировать код в буфер обмена
  1. echo '<div>';
  2. echo '<span>Все заметки</span>';
  3. echo '<table>';
  4. echo '<tr>';
  5. echo '<td colspan="2">';
  6. echo '<a href="#">Название заметки</a>';
  7. echo '</td>';
  8. echo '<td></td>';
  9. echo '</tr>';
  10. echo '<tr>';
  11. echo '<td colspan="2">';
  12. echo 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus consequatur cupiditate delectus doloremque error, excepturi fuga illum ipsum, molestias officiis quo repellendus rerum saepe soluta unde. Dolore id nesciunt numquam?';
  13. echo '</td>';
  14. echo '<td></td>';
  15. echo '</tr>';
  16. echo '<tr>';
  17. echo '<td colspan="2">Ярлыки:';
  18. echo '<a href="#">Спорт</a>';
  19. echo '</td>';
  20. echo <'td></td>';
  21. echo '</tr>';
  22. echo '<tr>';
  23. echo '<td colspan="2">Категории:';
  24. echo '<a href="#">Спорт</a>';
  25. echo '</td>';
  26. echo '<td></td>';
  27. echo '</tr>';
  28. echo '<tr>';
  29. echo '<td>';
  30. echo '<b>Автор:</b> Василий Теркин';
  31. echo '</td>';
  32. echo '<td>20.20.2014</td>';
  33. echo '</tr>';
  34. echo '<tr>';
  35. echo '<td colspan="2"></td>'
  36. echo '<td></td>';
  37. echo '</tr>';


Наверное не желательно писать 100500 echo или делать много подключений к БД?

И стоит ли париться с применением одинарных '' и двойных "" кавычек ?
2. andrewkard - 23 Ноября, 2015 - 12:52:24 - перейти к сообщению
newbie guy
Примерно так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $text = 'Название заметки';
  4. ?>
  5. <div>
  6. <span>Все заметки</span>
  7. <table>
  8. <tr>
  9. <td colspan="2">
  10. <a href="#"><?=$text; ?></a>
  11. </td>
  12. <td></td>
  13. </tr>
  14. <tr>
  15.  
3. DeepVarvar - 23 Ноября, 2015 - 13:20:46 - перейти к сообщению
newbie guy пишет:
Есть ли какие-то правила по оптимизации кода?
Опыт.
newbie guy пишет:
100500 echo
Аааа, так ты совсем о простых вещах.
Ну да, комментатор выше правильно показал -- если требуется вывалить большой кусок хтмл, то он должен быть хтмл, а не эхами.

Почитай: http://forum.php.su/topic.php?fo...33&topic=793
4. dcc0 - 23 Ноября, 2015 - 15:19:07 - перейти к сообщению
Почему-то имею тягу вообще отделять файлы php и html
Т.е. чаще через include подключаю html.

Люблю такую структуру, например, index.php:

include header.html
some php code
include footer.html

Разметка и дайзаин приносятся в жертву наглядности кода.

А вообще мне тут в одном проекте в одном файле сразу попадались несколько целых html сраниц со всеми заголовками.
Т.е. идет php код, уловие, по условию выводится либо одна страница, либо другая, и они прям вставлены в один файл... со всеми мета-тегами

Еще такое часто:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.         echo("
  3.                         <script>
  4.                                 function myfunc(){
  5.                                         location.href='somefile.php';
  6.                                 }
  7.                                 setTimeout('myfunc()', 5000);
  8.                         </script>
  9.                         <center><BR><BR><BR>
  10.                                 <i>Тут какой-то текст</i>
  11.                         </center>
  12.                 ");
  13.  
  14.  
  15. ?>
  16.  


Иногда делаю так, не знаю красиво ли,
разрыв цикла
PHP:
скопировать код в буфер обмена
  1. while {
  2. ?>
  3.  

html код
снова php, завершение цикла
PHP:
скопировать код в буфер обмена
  1.  }
  2. ?>

(Добавление)
По идее ведь повтор echo - это лишняя работа php - интерпретатора
Или я не прав?
5. newbie guy - 23 Ноября, 2015 - 22:37:56 - перейти к сообщению
Это интересно. Даже полезно.
Выходит, что echo для переменных применять нужно, а не для хтмл конструкций.

А есть ли какая-то принципиальная разница между записью $a = 'a' и $a = "a" ?
Мне рассказывали, что строки необходимо всегда писать в '', а переменные или хтмл теги в "". Типа двойные кавычки весят (по байтам) больше и еще одинарные кавычки обрабатываются вразы быстрее.

А вот еще вопрос. Что это значит, {$smart}, {{$smart}} ?
Вроде бы первое в шаблонизаторах используется.
Насчет второго...
Даже гугл не помог.

Ну и конечно же махонький кусочек моего кода.

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. require_once 'global.inc.php'; //здесь подключаются и вызываются все необходимые классы
  4.  
  5. $issetCookie = ''; //если задана куки
  6. $checkCookie = ''; //хорошая куки или нет
  7.  
  8. if(isset($_COOKIE['user'])) {  //проверяем наличие куки у посетителя страницы
  9.     $user = unserialize($_COOKIE['user']);
  10.     $issetCookie = true;
  11.     if ($userTools->checkUsernameExists($user['login'], $user['pass'], true)) { //сравниваем значения куки
  12.         $idUser = $user['id'];
  13.         $checkCookie = true;
  14.     } else {
  15.         $checkCookie = false;
  16.     }
  17. } else {
  18.     $issetCookie = false;
  19. }
  20.  
  21. //подключаем header
  22. include_once 'header.php';
  23.  
  24. ?>
  25.  
  26.  
  27. <section>
  28.     <?PHP if($issetCookie == true && $checkCookie == false) :  ?>
  29.     <span class="back-cookie">Кто вы такой, сударь?..</span>
  30.     <? endif; ?>
  31.  
  32.     <?PHP
  33.         if($issetCookie == '') :
  34.         $where = "access_prof = '1' ORDER BY date_add DESC LIMIT 5";
  35.         $res = $db->select('crud', $where);
  36.         $idStr = 1;
  37.     ?>
  38.  
  39.     <div class="wrap-quote">
  40.     <span class="str">Последние заметки</span>
  41.     <table>
  42.  
  43.     <?PHP
  44.         foreach($res as $val) :
  45.             if($val['author_note'] == '') { $author_note = 'Призрак'; }
  46.             else { $author_note = $val['author_note']; }
  47.     ?>
  48.  
  49.             <tr class="title-out">
  50.                 <td colspan="2"><a href="#"><?=$val['title']?></a></td><td></td>
  51.             </tr>
  52.             <tr class="note">
  53.                 <td id="id<?=$idStr?>" colspan="2"><?=$page->quote($val['note'], 400)?></td><td></td>
  54.             </tr>
  55.             <tr class="tr<?=$idStr?> treang">
  56.                 <td colspan="2"><a id="<?=$idStr?>" onclick="slideTo(this)"><i class="fa fa-chevron-down"></i></a></td><td></td>
  57.             </tr>
  58.             <tr class="tag">
  59.                 <td colspan="2">Ярлыки:<a href="#">Спорт</a></td><td></td>
  60.             </tr>
  61.             <tr class="cat">
  62.                 <td colspan="2">Категории:<a href="#">Спорт</a></td><td></td>
  63.             </tr>
  64.             <tr class="author">
  65.                 <td><b>Автор: </b><?=$author_note?></td><td><?=$val['date_add']?></td>
  66.             </tr>
  67.             <tr class="line-hr"><td colspan="2"></td><td></td></tr>
  68.  
  69.     <?PHP $idStr++; ?>
  70.     <?PHP endforeach; ?>
  71.  
  72.     </table>
  73.     </div>
  74.  
  75.     <?PHP endif; ?>
  76.  
  77.     <?PHP if ($issetCookie == true && $checkCookie == true) :
  78.         $where = "parent_id = '$idUser' ORDER BY date_add DESC";
  79.         $res = $db->select('crud', $where);
  80.     ?>
  81.  
  82.     <div class="add">
  83.         <table>
  84.             <tr>
  85.                 <td><a href="add.php">Новая заметка</a></td>
  86.             </tr>
  87.         </table>
  88.     </div>
  89.  
  90.     <div class="wrap-quote">
  91.         <span class="str">Мои заметки</span>
  92.         <table>
  93.         <?PHP foreach($res as $v) :
  94.             if($v['author_note'] == '') { $author_note = 'Призрак'; }
  95.             else { $author_note = $v['author_note']; }
  96.         ?>
  97.             <tr class="title">
  98.                 <td><a href="single.php?id=<?=$v['id']?>"><?=$v['title']?></a></td><td><i class="fa fa-times"></i></td>
  99.             </tr>
  100.             <tr class="note">
  101.                 <td colspan="2"><?=$page->quote($v['note'], 400)?></td><td></td>
  102.             </tr>
  103.             <tr class="tag">
  104.                 <td colspan="2">Ярлыки:<a href="#">Спорт</a></td><td></td>
  105.             </tr>
  106.             <tr class="cat">
  107.                 <td colspan="2">Категории:<a href="#">Спорт</a></td><td></td>
  108.             </tr>
  109.             <tr class="author">
  110.                 <td><b>Автор: </b><?=$author_note?></td><td><?$v['date_add']?></td>
  111.             </tr>
  112.             <tr class="line-hr"><td colspan="2"></td><td></td></tr>
  113.  
  114.         <?PHP endforeach; ?>
  115.  
  116.         </table>
  117.     </div>
  118.  
  119.     <?PHP endif; ?>
  120.  
  121. </section>
  122.  
  123. <?PHP
  124. //подключаем footer
  125. include_once 'footer.php';
  126. ?>


Если кто-то взглянет все таки на код, расскажите чего здесь писать не стоит.

Это страница index.php
Выглядит она так, как видно на скрине.
Все работает. Ошибок нет.

Я всегда считал, что не важно что ты накалякаешь в коде, главное чтобы результат был правильным.
Но недавно побывал на собеседовании, и оказалось что я ошибался.

Очень важно услышать советы от умных людей.

И спасибо всем кто уже ответил.

P.S. Я не учился на программиста и курсы не проходил. По образованию телефонист. Работаю строителем. Особого опыта в программировании не имею. Надеюсь на конструктивную критику и минимум оскорблений))
6. dcc0 - 24 Ноября, 2015 - 02:21:01 - перейти к сообщению
Цитата:
Выходит, что echo для переменных применять нужно, а не для хтмл конструкций.
Применяют для всего Улыбка. По поводу рекомендаций, надеюсь, ответят опытные товарищи.



Вот интересная заметка, близкая к теме.
http://habrahabr[dot]ru/post/259497/
Наверное, нужно говорить себе каждый раз, когда садишься программировать на PHP - "PHP - это динамические типы данных!"

Про кавычки, да. Тоже читал.
7. DeepVarvar - 24 Ноября, 2015 - 03:07:36 - перейти к сообщению
newbie guy пишет:
Я не учился на программиста и курсы не проходил. По образованию телефонист. Работаю строителем
Да тут 90% форума такие.
Например я.
Неуч, рас.... (а, ну да, нельзя же), 9 кл вечерки, кем я только не работал, но дольше всего сантехником, и приходя вечером домой садился за изучение и мракобесие экспериментов.
Можешь мои первые мессаги почитать -- там же клоунада сплошная.

Какие советы?
Ковыряй и не останавливайся на пол пути.
Назвался груздем -- полезай в короб.
8. esterio - 24 Ноября, 2015 - 10:55:00 - перейти к сообщению
1. Разница между '' и "" рписана в документации
http://php.net/manual/ru/languag...types.string.php
Цитата:
В отличие от синтаксиса двойных кавычек и heredoc, переменные и управляющие последовательности для специальных символов, заключенных в одинарные кавычки, не обрабатываются.

Цитата:
Если строка заключена в двойные кавычки ("), PHP распознает большее количество управляющих последовательностей для специальных символов:

Цитата:
Если строка указывается в двойных кавычках, либо при помощи heredoc, переменные внутри нее обрабатываются.

2.
newbie guy пишет:
Что это значит, {$smart}, {{$smart}} ?

1. Первое это переменная $smar в строке если стоят двойные кавычки. Второе это вроде из шаблонизатора типа smarty

 

Powered by ExBB FM 1.0 RC1