Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2012, 11:57   #1
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию Разумность подхода

Меня в последнее время привлекают конструкции типа:
PHP код:
Class A
{
    function 
foo()
    {
        return include(
"A.foo.php");
    }

A.foo.php
что-то делаем
return что-то там

Плюсы:
1. Могу писать код функции не мешая остальным программистам.
2. В коде могут быть ошибки, но пока не будет обращения к данному php этой ошибки не возникнет
3. Уменьшение кода, вместо одного файла на 1000 строк грузится 1-4 по 50-100 строк. Естественно если в методе всего 5-10 строк кода, то можно и не выносить. И ровно также, если имеются часто используемые функции и методы, то их лучше описать непосредственно в классе или для функций вынести их в отдельный functions.php.

Минусы:
1. Более частое обращение к файловой системе. Но если учесть что имеется кеширование часто используемых файлов, то проблема отпадает.
Больше минусов не вижу.

Интересно мнение специалистов.

Последний раз редактировалось Kostia; 22.08.2012 в 12:01.
Kostia вне форума Ответить с цитированием
Старый 22.08.2012, 14:04   #2
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Это старый метод, сейчас лучше использовать namespaces + autoload
кстати include ничего не возвращает
Cronos20 вне форума Ответить с цитированием
Старый 22.08.2012, 14:25   #3
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

__autoload даа, это действительно весело
Lesha вне форума Ответить с цитированием
Старый 22.08.2012, 14:48   #4
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

autoload я так понял есть некая умная обвертка над тем же include при возникновении определенных исключений. Прикольно, но такая фишка мне не нужна, меня больше интересует целесообразность разбиения, выноса больших определений методов класса в отдельные файлы.

Цитата:
Можно определить функцию __autoload(), которая будет автоматически вызвана при использовании ранее неопределенного класса или интерфейса. Вызов этой функции - последний шанс для интерпретатора загрузить класс прежде, чем он закончит выполнение скрипта с ошибкой.
Улыбнуло.

Цитата:
кстати include ничего не возвращает
Значит я использую баг как фичу ^^
Kostia вне форума Ответить с цитированием
Старый 22.08.2012, 23:26   #5
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Ну у вас же в подписи отмечен C++ .... странные вопросы задаете)) ну понятное дело есть целесообразность структуировать код и выделять классы в отдельные файлы + для каждого namespace отдельная папка и никакой проблемы с производительностью нету. Современные php фреймворки подгружают в качестве баласта сотни файлов .. и ничего, все вроде работает даже на крупных проектах
Cronos20 вне форума Ответить с цитированием
Старый 23.08.2012, 17:08   #6
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Метод эффективен при 2K и более строк. Проверял лично тестами. При меньших объёмах время подключения к файлу превышает время его считывания.
Виталий Желтяков вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паттерн Singleton против функционального подхода FiloXSee Общие вопросы по программированию, компьютерный форум 11 31.07.2011 18:13
Пример использования эвристического и строгого подхода. Молодая Помощь студентам 1 26.05.2010 22:25
Реализация объєктно-ориентированого подхода при разработке программы (с использованием нотации Буча) Vikk22 Помощь студентам 3 18.11.2007 19:53