throw
This parameter specifies whether spl_autoload_register() should throw exceptions when the autoload_function cannot be registered.
А сейчас в стандартах PSR следующее:
Autoloader implementations MUST NOT throw exceptions, MUST NOT raise errors of any level, and SHOULD NOT return a value.
В первом случае просто используется пользовательский класс исключений вместо встроенного, а так, можно было включить встроенную опцию? Что означает фраза из PSR? В примере из урока же и есть реализация автозагрузчика..
Ну так параметр throw о другом. Не про то, что не удалось загрузить класс, а о том, что функцию не удалось зарегистрировать.
В нашей реализации автозагрузки нет бросания исключений, так что PSR всё соответствует.
В данном руководстве намеренно не приводится никаких рекомендаций относительно использования $StudlyCaps, $camelCase или $under_score вариантов именования свойств.
Какой бы вариант именования ни был выбран, СЛЕДУЕТ сохранять его неизменным в рамках некоторого разумного объёма кода (например, на уровне производителя, пакета, класса или метода).
Почему в уроках про ООП, когда мы создавали классы в Models мы в свойствах использовали camelCase
пример:
В mysql используется under_score. Можно было бы и в Models писать в under_score и тогда бы нам не понадобилось создавать лишние функции типа: underscoreToCamelCase(string $source), camelCaseToUnderscore(string $source)
В mysql используется under_score. Можно было бы и в Models писать в under_score и тогда бы нам не понадобилось создавать лишние функции типа: underscoreToCamelCase(string $source), camelCaseToUnderscore(string $source)
Можно, конечно, но на деле все используют camelCase. Я бы не стал делать исключений для нейминга в классах моделей.
2.3. Side Effects
A file SHOULD declare new symbols (classes, functions, constants, etc.) and cause no other side effects, or it SHOULD execute logic with side effects, but SHOULD NOT do both.
The phrase “side effects” means execution of logic not directly related to declaring classes, functions, constants, etc., merely from including the file.
“Side effects” include but are not limited to: generating output, explicit use of require or include, connecting to external services, modifying ini settings, emitting errors or exceptions, modifying global or static variables, reading from or writing to a file, and so on.
Тут получается, что если объявляются какие-то методы, функции, константы, в файле не должно быть ни инклюдов, ни риквайров, ни исключений, ни изменение статических/глобальных пеерменных. Что же тогда это за логика такая? Насколько вообще это реально? Это выполнить полностью можно наверное только в интерфейсах?
PSR-2 находится в категории Deprecated
Ага, спасибо. Надо бы обновить урок.
Уже в нескольких уроках уроках встречается нюанс - об исключениях при реализации автозагрузчика.
Сначала я увидел это:
Потом почитал про сам автозагрузчик, в котором есть встроенная опция исключений:
А сейчас в стандартах PSR следующее:
В первом случае просто используется пользовательский класс исключений вместо встроенного, а так, можно было включить встроенную опцию? Что означает фраза из PSR? В примере из урока же и есть реализация автозагрузчика..
Ну так параметр throw о другом. Не про то, что не удалось загрузить класс, а о том, что функцию не удалось зарегистрировать.
В нашей реализации автозагрузки нет бросания исключений, так что PSR всё соответствует.
Вопрос о PSR-1:
Почему в уроках про ООП, когда мы создавали классы в Models мы в свойствах использовали camelCase
пример:
В mysql используется under_score. Можно было бы и в Models писать в under_score и тогда бы нам не понадобилось создавать лишние функции типа: underscoreToCamelCase(string $source), camelCaseToUnderscore(string $source)
Можно, конечно, но на деле все используют camelCase. Я бы не стал делать исключений для нейминга в классах моделей.
Тут получается, что если объявляются какие-то методы, функции, константы, в файле не должно быть ни инклюдов, ни риквайров, ни исключений, ни изменение статических/глобальных пеерменных. Что же тогда это за логика такая? Насколько вообще это реально? Это выполнить полностью можно наверное только в интерфейсах?
Там же есть примеры, в нашем приложении в курсе ООП так и вышло +/-