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 :: Версия для печати :: Число строк кода переваливает за 2000
Форумы портала PHP.SU » PHP » Программирование на PHP » Число строк кода переваливает за 2000

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

1. obi-wan - 26 Сентября, 2007 - 11:47:57 - перейти к сообщению
Здравствуйте!
Пишется крупный пхп проект. Код уже получается длинный, и вдобавок известно, что будут добавляться все новые и новые страницы с нестандартным содержимым, так что код будет еще длиннее. Мало того, для новых страниц не создается отдельный файл .php, а они добавляются по следующему принципу:
index.php:
PHP:
скопировать код в буфер обмена
  1.  
  2. require_once("pages.php");
  3. ...
  4. // $page_type получаем из GET
  5.  
  6. switch ($page_type)
  7. {
  8.   case "page_name":
  9.     $page = new page_name;
  10.     break;
  11.   ...
  12. }
  13. echo_page($page);
  14.  


pages.php:
PHP:
скопировать код в буфер обмена
  1.  
  2. class html_page
  3. {
  4.   var $content;
  5.   ...
  6. }
  7.  
  8. class page_name extends html_page
  9. {
  10.   function page_name()
  11.   {
  12.      $this->content = "...";
  13.      ...
  14.   }
  15. }
  16.  
  17. function echo_page($page)
  18. {
  19.    echo " ...
  20.    {$page->content}
  21.   ...";
  22. }
  23.  

Структура, в общем, такая. Мне она очень понравилась. Развязывает руки во многом. Однако код pages.php получается уже очень длинным.

Вопрос:
1. Будет ли такой большой код одного файла сильно тормозить выполнение программы, если он еще разрастется (сейчас пока все ок)?
2. Будет ли быстрее работать программа, если чуть-чуть по-другому действовать?
index.php:
PHP:
скопировать код в буфер обмена
  1.  
  2. // $page_type получаем из GET
  3.  
  4. switch ($page_type)
  5. {
  6.   case "page_name":
  7.     include("page_name.php");
  8.     $page = new page_name;
  9.     break;
  10.   ...
  11. }
  12. echo_page($page);
  13.  

То есть для каждой страницы делать отдельный файл с определением ее класса, а потом динамически инклудить только нужный файл, не читая 3000 строк pages.php?
2. valenok - 26 Сентября, 2007 - 12:18:47 - перейти к сообщению
Если у вас за раз вызывается лишь один класс
тоесть action=1 тогда один класс а при action 2 другой
то обязательно выделите каждый класс в отдельный скрипт
и действуйте как вы в конце предложили.\n\n(Добавление)
1. Да
2. Да
3. obi-wan - 26 Сентября, 2007 - 12:57:38 - перейти к сообщению
Спасибо. Я вот в чем сомневался. ПХП же интерпретирует, а не компилирует. Поэтому подумал, что можно гулять по строкам, куда скажут, а не читать и компилить 3000-строчный файл.
Значит, он все равно читает всё?
4. valenok - 26 Сентября, 2007 - 13:34:09 - перейти к сообщению
Вы встречали ошибку E_PARSE.
На размышления наводит?\n\n(Добавление)
да и в конце концов ему же как то надо знать к какой строке перейти
ты же пишешь $a = func($b); а не $a = gotoline(1740);
5. obi-wan - 27 Сентября, 2007 - 13:14:42 - перейти к сообщению
Спасибо. Вопросов больше нет Улыбка
6. obi-wan - 04 Октября, 2007 - 19:43:20 - перейти к сообщению
Мысль.
Ошибка E_PARSE может возникать просто потому, что дошел пхп до какой-то строчки, отпарсить не может - вот и выдает. Дальше не читает, поэтому таких ошибок всегда не больше одной.

Вызов функций. Функции вызываются только после того, как их определение прочитано. Поэтому ничего "дальше" читать тоже по идее не надо.
7. valenok - 04 Октября, 2007 - 20:42:25 - перейти к сообщению
А значит ли это что парсер всё таки читает?
8. obi-wan - 05 Октября, 2007 - 11:20:27 - перейти к сообщению
Само по себе не значит. Другое дело, что я взял и проверил.
Написал такой код:


Не выполнилось. Улыбка значит, читает.

 

Powered by ExBB FM 1.0 RC1