Comments 23
Ага, всё круто. НО вот представьте ситуацию:
Вы написали приложение (а то и с десяток) с этим автолоадером и стилем которого не придерживается Yii,
а потом решили работать с коллегами вместе, которые уже тоже разобрались с этим «смирились и не парятся» (реально не парятся)
Вероятно для них это будет не удобно… не так ли?
IMHO: для меня точно не удобно, я уже привык и не парюсь.
Ну и с некоторыми IDE будут траблы из-за регистра.
Вы написали приложение (а то и с десяток) с этим автолоадером и стилем которого не придерживается Yii,
а потом решили работать с коллегами вместе, которые уже тоже разобрались с этим «смирились и не парятся» (реально не парятся)
Вероятно для них это будет не удобно… не так ли?
IMHO: для меня точно не удобно, я уже привык и не парюсь.
Ну и с некоторыми IDE будут траблы из-за регистра.
+3
Если работать с коллегами вместе, то должен быть кодестайл. Почему считаете, что им будет неудобно? Я за автолоадер PSR-0, где ns с большой буквы должны быть. Насчет IDE, приведите пример.
+2
Такое ощущение что вы не кодите :)
Строго говоря где в стандарте про регистр первой буквы?
(И по мне так странно если бы это туда включили www.php-fig.org/psr/psr-0/)
IDE пример — phpStorm — перестаёт автокомплитить.
попробуйте use Yii\he(Ctrl+space) = No suggestion
попробуйте use yii\he(Ctrl+space) = yii\helpers
Строго говоря где в стандарте про регистр первой буквы?
(И по мне так странно если бы это туда включили www.php-fig.org/psr/psr-0/)
IDE пример — phpStorm — перестаёт автокомплитить.
попробуйте use Yii\he(Ctrl+space) = No suggestion
попробуйте use yii\he(Ctrl+space) = yii\helpers
+1
В PSR-0 об этом не сказано, но сказано в PSR-1.
И меня честно говоря удивляет тот факт, что авторы фреймворка не следуют принятому стандарту, при том что они состоят в группе FIG
Class names MUST be declared in StudlyCaps.
www.php-fig.org/psr/psr-1/
И меня честно говоря удивляет тот факт, что авторы фреймворка не следуют принятому стандарту, при том что они состоят в группе FIG
+1
Class name != Namespace (тем более в самом PSR-1 «Namespaces and classes»)
+2
При чем тут классы вообще?
Да и классы все с большой буквы вроде… всё чётко.
Да и классы все с большой буквы вроде… всё чётко.
+2
Оу, точно…
Тогда мой наезд не засчитан, где там мой пепел для головы?)
Тогда мой наезд не засчитан, где там мой пепел для головы?)
+2
В терминологии PHP нэймспейс считается частью названия класса. В частности функция get_class() возвращает имя класса с нэймспэйсом, а на php.net в описании этой функции написано так: Returns the name of the class of an object.
Т.е. можно сделать вывод, что для разработчиков PHP нэймспэйс — это часть имени класса.
Думаю, что именно по этому в PSR стандартах не написано ничего про нэймспейсы, ведь к нэймспейсам должны применяться те же правила, что и к классам.
Т.е. можно сделать вывод, что для разработчиков PHP нэймспэйс — это часть имени класса.
Думаю, что именно по этому в PSR стандартах не написано ничего про нэймспейсы, ведь к нэймспейсам должны применяться те же правила, что и к классам.
0
Проблема только с написанием пространства, потому как
use Yii\Helpers\(Ctrl+space) — предлагает классы.
use Yii\Helpers\(Ctrl+space) — предлагает классы.
0
Я знаю один аргумент за пространства имен с маленькой буквы. Таким образом визуально сразу распознается что есть папка-namespace, а что есть реальное короткое название класса.
+2
Я, как бывший олимпиадник, не могу спокойно смотреть на этот перевод ресурсов…
Ну почему нельзя было написать
if (0 === strpos($class, 'Yii\\')) {
Ну почему нельзя было написать
if ('Yii\\' === substr($class, 0, 4)) {
-17
1. Ваш вариант с первого взгляда менее понятный
2. Не поленился, проверил:
Результат:
Не экономьте на спичках, тем более что ваш вариант медленнее.
2. Не поленился, проверил:
$class = 'Yii\\test';
$iterations = 100000;
foreach (range(0, 9) as $iteration) {
$start = microtime(true);
for ($i = 0; $i < $iterations; $i++) {
if (0 === strpos($class, 'Yii\\')) {
}
}
$finish = microtime(true) - $start;
$startOlympiad = microtime(true);
for ($i = 0; $i < $iterations; $i++) {
if ('Yii\\' === substr($class, 0, 4)) {
}
}
$finishOlympiad = microtime(true) - $startOlympiad;
var_dump($finish);
var_dump($finishOlympiad);
var_dump('-------------');
}
Результат:
float(0.03000283241272)
float(0.047005176544189)
string(13) "-------------"
float(0.027001857757568)
float(0.036004066467285)
string(13) "-------------"
float(0.027003049850464)
float(0.032002925872803)
string(13) "-------------"
float(0.027003049850464)
float(0.034003019332886)
string(13) "-------------"
float(0.024001836776733)
float(0.031004190444946)
string(13) "-------------"
float(0.033002853393555)
float(0.035002946853638)
string(13) "-------------"
float(0.027003049850464)
float(0.036003828048706)
string(13) "-------------"
float(0.028002977371216)
float(0.033003091812134)
string(13) "-------------"
float(0.023001909255981)
float(0.034003973007202)
string(13) "-------------"
float(0.027002096176147)
float(0.029002904891968)
string(13) "-------------"
Не экономьте на спичках, тем более что ваш вариант медленнее.
+3
Отлично, вы проверили лучший случай. Теперь осталось проверить худший и средний.
Вот худший:
Что, правда, делать со средним — не совсем ясно.
Вот худший:
$class = 'VeryStrangeThirdPartyLibraryName\\This\\Is\\A\\Very\\Long\\Namespace\\Path\\With\\Many\\Parts\\To\\This\\Class';
Что, правда, делать со средним — не совсем ясно.
-1
php 5.3.22
Не думаю, что у нас тут будет когда-либо затык, так что спор в любом случае безсмысленный.
float(0.025063037872314)
float(0.027328968048096)
string(13) "-------------"
float(0.024883985519409)
float(0.027305841445923)
string(13) "-------------"
float(0.024459838867188)
float(0.027107000350952)
string(13) "-------------"
float(0.024399995803833)
float(0.027168035507202)
string(13) "-------------"
float(0.024492979049683)
float(0.027180910110474)
string(13) "-------------"
float(0.024927854537964)
float(0.027140855789185)
string(13) "-------------"
float(0.024561166763306)
float(0.027137041091919)
string(13) "-------------"
float(0.024441957473755)
float(0.027230024337769)
string(13) "-------------"
float(0.024482011795044)
float(0.027484893798828)
string(13) "-------------"
float(0.024868011474609)
float(0.027168989181519)
string(13) "-------------"
Не думаю, что у нас тут будет когда-либо затык, так что спор в любом случае безсмысленный.
+2
Оптимизация из серии «если утром встать с правильно ноги, то на работу будет идти на один шаг меньше».
+7
Копирование и создание строки будет медленнее, если конечно у вас строка не километровая.
0
Substr создаёт новый zval, это тоже тормоз. Правильное решение, достойное нанооптимизатора — strncmp ;)
+3
Оригинально, но это лишь дело предпочтений. Я использую неймспейсы только в нижнем регистре(в 1-й версии, надо об этом статью как-то написать). Только как-то топорно автолоадер вешается, в YiiBase же было что-то для этих целей…
0
ln -s yii Yii и далее рекурсивно, шах и мат :)
-1
Sign up to leave a comment.
Пишем пространства с большой буквы в Yii 2.0