Stek: а в классе это сделается все само ? :) Хотите секрет открою ? Код в классах так же состоит из функций, который точно так же вам придется дописывать.
А вообще про классы доказывайте топикстартуру, мне то это зачем ?
Да, extends =). ТС-у доказывать смысла вообще нет - он еще не понял что это, а без это понять как и где применять невозможно.
P.S.: код в классах состоит не из функций, а из методов, которые привязанны к объекту (ну это в теории).
Это очень классно в споре брать одну вещь (листинг директории) и доказывать ее с помощью совершенно другой (работой с архивами) :)
Эмм.. Реально считаешь свой код заменой моему? =))) Ок, добавь обработку .bz - должно быть тоже самое, что и для .zip. Копи/паст? Особенно если все-таки какие-то мелочи надо добавить =)
Дальше объяснять? Можно еще добавить пре-/пост- обработку - вообще будет весело.
По поводу листингов/архивов - я-то как-раз и дал пример на листинги, только расширенный, когда не только тупой листинг, но еще и работа с ним. Могу еще примеры добавить, когда нужны одни и те же (по названиям) функции/методы, но с разным кодом внутри. Например: файл с 5-ю функциями и 5 мест для их вызова, но в каждом месте одна из функций должна меняться. Что получится на функциях? Правильно - 10 файлов и 5 инклудов в каждом месте подключения.
В общем, многие вещи на классах значительно проще решать. Тот же обход директорий ;)
Stek: Какой var_dump ? Где я про var_dump что то писал ? Может не будем следовать женской логике и придумывать то, о чем не было речи, а ? :)
А может просто будем читать внимательнее? =))) Вроде понятно написано: "Пример с тем-же print, а точнее var_dump... Можно сделать просто var_dump, а можно обернуть его в статичный метод класса." При чем тут твои слова? =)
Stek: Так проще, но все равно, объясните мне вообще смысл делать отдельный класс на чтение директории ? Хотя возможно пример глупый с файлами, кроме вопроса "нафига так делать" он ничего не вызывает. Точно так же я могу сделать отдельную функцию readDirFiles(); и использовать ее с таким же успехом. Разницы ни какой.
Да легко... Например, есть базовый класс, для основных действий (обход директорий, копирование, перемещение и пр.). И есть наследуемые, которые по расширению файла делают определенные действия (например, .rar|.zip|.7z - отправлять на ftp, .txt|.rtf|.doc|.xml - конвертировать и копировать в определенные папки и т.д.). На функциях получится примерно так: определяем расширение, вызываем нужную функцию:
$ext = ...;
if (in_array($ext, array('rar', 'zip', '7z')))
wrapper_archive($filename);
...
Дальше враппер делает определенные действия, заложенные алгоритмом. Все верно? На классах примерно так-же:
class wrapper_archive {
...
}
class wrapper_rar extends wrapper_archive {}
class wrapper_zip extends wrapper_archive {}
class wrapper_7z extends wrapper_archive {}
Набросок на классах. А теперь самое интересное: что произойдет, когда надо будет 7z обрабатывать отдельно? Например, добавить новый файл в архив и описание, оставив его на месте?
На функциях - правим основной код, на классах - нужный класс, не трогая остальное (а значит, меньше риска что вообще поломаем код приложения).
Никто не спорит, что все, что можно сделать на классах можно сделать и на функциях. Но ООП сильно (ОЧЕНЬ СИЛЬНО) упрощает поддержку ;)
Кстати, советую поизучать кохану. За счет хорошей файловой структуры ООП там показывает всю свою силу. Не трогая сам фреймворк его-же (фреймворк, т.е.) можно изменять!! Попробуйте реализовать подобное на функциях. Как уже говорил - это возможно, но очень сложно, а уж поддерживать - лучше сразу застрелиться =)))
Stek: Для меня прелесть классов в возможности создавать читаемые имена и иметь единое пространство данных внутри программы. А оборачивать элементарные функции в класс, ну его нафиг. Видел как люди с 100% OOP скриптом, даже print делали как $print->show('Hello world');
Ну это вы тоже очень зря. Еще раз предлагаю посмотреть ko3. Все хелперы - статичные классы с кучей методов. И каждый можно заменить на свое, не трогая другие.
Пример с тем-же print, а точнее var_dump... Можно сделать просто var_dump, а можно обернуть его в статичный метод класса. Для чего? Чтобы потом, через неделю-две, переписать: будет не просто выводиться результат, но еще и отправляться на мыло, например =)))
KILLER666: подскажите где найти скрипт на котором работают wizard-traffic_com adsyst_ru, копался в поиске, не смог найти.
нужно сделать приват программу именно на данном скрипте, понравился.
Stek: Второй пример - это как раз тот случай, когда ООП используется ради "ООП ведь как это круто, а на процедурах лохи программируют!". В результате чего, каждую функцию php оборачивают в объект ... и используют снова как функцию, только уже вызывая объект.
Если первый пример быстр и понятен, то второй пример имеет кучу оверкода в классах и на каждый файл создает дополнительный объект. Одним словом прекрасный пример как засунуть ООП туда, где он совершенно не нужен.
"$file->isDot()" вообще убивает, нафига вне класса проверять на мусор, класс сам это не в состоянии сделать ? :)
А если так:
class Filer extends DirectoryIterator {
...
}
...
$filer = new Filer();
foreach ($filer -> files() as $file) {
...
}
qList: К примеру, если у вас есть задача написать высоконагруженный проект, где основное требование - быстродействие, выбирали бы ли вы фреймворки с написанными кем-то классами (наверняка не совсем отимальными) или писали бы свои функции/классы.
Фреймворки удобны разработчикам, а вот с точки зрения продуктивности приложения какая ситуация.
Выбрал бы фреймворк, что кстати уже не однократно делал. Тормоза чаще всего не в коде, а во взаимодействии кода и базы. И фреймворк тут помогает не тратить время на то, что можно сделать быстро и качественно (код, кеширование и пр.), а потратить время с умом на проектирование хранения данных.
denn_g: Всегда удивлял профессиональный ответ "Самописный"
Хозяева сайтов Torg ua и emarket ua разные компании и что они обе написали одинаковый движок?
Еще польский tablica*pl
А в чем сомнения-то? Torg.ua - это avito.ru, slando.com.ua - slando.ru.
tablica.pl, emarket.ua, ataxa.ru - это уже третий движок, в подвале можно посмотреть другие сайты на нем, если я не ошибаюсь. Во всяком случае, все они берут статику из одного места ;)
А движки очень даже отличаются. Хотя бы по обработке несуществующих страниц ;)
Дам старт в 10$
Несколько человек интересовались покупкой домена, но сам назначить цену не могу. Прошу помощи: сколько примерно стоит домен cp.su?
а в классе это сделается все само ? :) Хотите секрет открою ? Код в классах так же состоит из функций, который точно так же вам придется дописывать.
А вообще про классы доказывайте топикстартуру, мне то это зачем ?
Да, extends =). ТС-у доказывать смысла вообще нет - он еще не понял что это, а без это понять как и где применять невозможно.
P.S.: код в классах состоит не из функций, а из методов, которые привязанны к объекту (ну это в теории).
aktuba, ты сейчас меня таким образом в оппоненты к пользователям классов хочешь внести ? :) Да ппф, как нефиг делать :)
Это очень классно в споре брать одну вещь (листинг директории) и доказывать ее с помощью совершенно другой (работой с архивами) :)
Эмм.. Реально считаешь свой код заменой моему? =))) Ок, добавь обработку .bz - должно быть тоже самое, что и для .zip. Копи/паст? Особенно если все-таки какие-то мелочи надо добавить =)
Дальше объяснять? Можно еще добавить пре-/пост- обработку - вообще будет весело.
По поводу листингов/архивов - я-то как-раз и дал пример на листинги, только расширенный, когда не только тупой листинг, но еще и работа с ним. Могу еще примеры добавить, когда нужны одни и те же (по названиям) функции/методы, но с разным кодом внутри. Например: файл с 5-ю функциями и 5 мест для их вызова, но в каждом месте одна из функций должна меняться. Что получится на функциях? Правильно - 10 файлов и 5 инклудов в каждом месте подключения.
В общем, многие вещи на классах значительно проще решать. Тот же обход директорий ;)
Какой var_dump ? Где я про var_dump что то писал ? Может не будем следовать женской логике и придумывать то, о чем не было речи, а ? :)
А может просто будем читать внимательнее? =))) Вроде понятно написано: "Пример с тем-же print, а точнее var_dump... Можно сделать просто var_dump, а можно обернуть его в статичный метод класса." При чем тут твои слова? =)
Так проще, но все равно, объясните мне вообще смысл делать отдельный класс на чтение директории ? Хотя возможно пример глупый с файлами, кроме вопроса "нафига так делать" он ничего не вызывает. Точно так же я могу сделать отдельную функцию readDirFiles(); и использовать ее с таким же успехом. Разницы ни какой.
Да легко... Например, есть базовый класс, для основных действий (обход директорий, копирование, перемещение и пр.). И есть наследуемые, которые по расширению файла делают определенные действия (например, .rar|.zip|.7z - отправлять на ftp, .txt|.rtf|.doc|.xml - конвертировать и копировать в определенные папки и т.д.). На функциях получится примерно так: определяем расширение, вызываем нужную функцию:
Дальше враппер делает определенные действия, заложенные алгоритмом. Все верно? На классах примерно так-же:
class wrapper_archive {
...
}
class wrapper_rar extends wrapper_archive {}
class wrapper_zip extends wrapper_archive {}
class wrapper_7z extends wrapper_archive {}
...
$ext = ...;
$class = 'wrapper_' . $ext;
$class::action();
Набросок на классах. А теперь самое интересное: что произойдет, когда надо будет 7z обрабатывать отдельно? Например, добавить новый файл в архив и описание, оставив его на месте?
На функциях - правим основной код, на классах - нужный класс, не трогая остальное (а значит, меньше риска что вообще поломаем код приложения).
Никто не спорит, что все, что можно сделать на классах можно сделать и на функциях. Но ООП сильно (ОЧЕНЬ СИЛЬНО) упрощает поддержку ;)
Кстати, советую поизучать кохану. За счет хорошей файловой структуры ООП там показывает всю свою силу. Не трогая сам фреймворк его-же (фреймворк, т.е.) можно изменять!! Попробуйте реализовать подобное на функциях. Как уже говорил - это возможно, но очень сложно, а уж поддерживать - лучше сразу застрелиться =)))
Для меня прелесть классов в возможности создавать читаемые имена и иметь единое пространство данных внутри программы. А оборачивать элементарные функции в класс, ну его нафиг. Видел как люди с 100% OOP скриптом, даже print делали как $print->show('Hello world');
Ну это вы тоже очень зря. Еще раз предлагаю посмотреть ko3. Все хелперы - статичные классы с кучей методов. И каждый можно заменить на свое, не трогая другие.
Пример с тем-же print, а точнее var_dump... Можно сделать просто var_dump, а можно обернуть его в статичный метод класса. Для чего? Чтобы потом, через неделю-две, переписать: будет не просто выводиться результат, но еще и отправляться на мыло, например =)))
подскажите где найти скрипт на котором работают wizard-traffic_com adsyst_ru, копался в поиске, не смог найти.
нужно сделать приват программу именно на данном скрипте, понравился.
Первый похоже на java: http://wizard-traffic.com/manager/
Второй пример - это как раз тот случай, когда ООП используется ради "ООП ведь как это круто, а на процедурах лохи программируют!". В результате чего, каждую функцию php оборачивают в объект ... и используют снова как функцию, только уже вызывая объект.
Если первый пример быстр и понятен, то второй пример имеет кучу оверкода в классах и на каждый файл создает дополнительный объект. Одним словом прекрасный пример как засунуть ООП туда, где он совершенно не нужен.
"$file->isDot()" вообще убивает, нафига вне класса проверять на мусор, класс сам это не в состоянии сделать ? :)
А если так:
class Filer extends DirectoryIterator {
...
}
...
$filer = new Filer();
foreach ($filer -> files() as $file) {
...
}
Так проще? =)
К примеру, если у вас есть задача написать высоконагруженный проект, где основное требование - быстродействие, выбирали бы ли вы фреймворки с написанными кем-то классами (наверняка не совсем отимальными) или писали бы свои функции/классы.
Фреймворки удобны разработчикам, а вот с точки зрения продуктивности приложения какая ситуация.
Выбрал бы фреймворк, что кстати уже не однократно делал. Тормоза чаще всего не в коде, а во взаимодействии кода и базы. И фреймворк тут помогает не тратить время на то, что можно сделать быстро и качественно (код, кеширование и пр.), а потратить время с умом на проектирование хранения данных.
Всегда удивлял профессиональный ответ "Самописный"
Хозяева сайтов Torg ua и emarket ua разные компании и что они обе написали одинаковый движок?
Еще польский tablica*pl
А в чем сомнения-то? Torg.ua - это avito.ru, slando.com.ua - slando.ru.
tablica.pl, emarket.ua, ataxa.ru - это уже третий движок, в подвале можно посмотреть другие сайты на нем, если я не ошибаюсь. Во всяком случае, все они берут статику из одного места ;)
А движки очень даже отличаются. Хотя бы по обработке несуществующих страниц ;)
Покажите сайт в личку, плз