Использование ООП для объединения множества функций (вид пространства имен) в PHP? - PullRequest
4 голосов
/ 16 декабря 2008

Я работаю с PHP и мне интересно, насколько плохой практикой является объединение множества функций в класс. Я знаю, что это не цель классов, но причина, по которой я бы это сделал, - предоставить пространство имен. Насколько сильно это влияет на инициацию, скажем, 10 классов при выполнении скрипта PHP вместо, скажем, 2 или 3?

Ответы [ 3 ]

6 голосов
/ 16 декабря 2008

Если вы используете версию php <5.3 (и, возможно, вы не можете использовать пространства имен), чем вы могли бы использовать что-то вроде: </p>

<?php
class Foo {
   public static function aStaticMethod() {
       // ...
   }
}

Foo::aStaticMethod();
?> 

(скопировано с руководства пользователя php )

Я бы сказал, что это функция класса - группировка функций.

Это не будет иметь никаких проблем с производительностью (вы могли бы сделать это миллионы раз, и вы даже не заметите - не должно быть никаких затрат времени выполнения, только дополнительная минутная обработка и это незначительно). Современные php-фреймворки приносят массу кода и создают множество объектов внутри себя - я бы не стал беспокоиться о производительности php, производительность базы данных почти всегда поражает вас первой. Убедитесь, что ваш код доступен для чтения и сопровождения (да, особенно php-код;)), и если это означает группирование функций, сделайте это.

«97% преждевременной оптимизации - корень всего зла», особенно когда вы делаете веб-страницы, а не ядерные симуляции;)

Редактировать: public и static только php5, в php <5 вы можете попробовать: </p>

<?php
class Foo {
   function aStaticMethod() {
       // don't touch $this
   }
}

Foo::aStaticMethod();
?> 
3 голосов
/ 16 декабря 2008

Если вы настолько обеспокоены производительностью, что загрузка 10 классов слишком медленная, то вам не следует использовать PHP.

По крайней мере, используйте кэш кода операции, такой как APC, и тогда загрузка классов вообще не будет обременительной.

0 голосов
/ 16 декабря 2008

Возможно, вы не знаете, что в PHP недавно появилась поддержка пространства имен первого класса: http://php.net/language.namespaces.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...