Не совсем понимаю, что это изменит? Я вот только что выполнил поиск по компьютеру (от корня) и не нашел бинарных файлов brew и wget. Смена путей не создаст новых комманд.
Ха, это получается я «встроил» шаблон проектирования «Реестр» в систему, только без явного создания объекта. Но на всякий случай я отделю его, т.к. в классе Facade есть публичный метод для запуска системы, что может быть не безопасно.
nazarpc, я подумал, поразмыслил, и реализовал хранение вашим методом. Только, немного поправив функцию и ее смысл (не знаю, насколько это все правильно, я только учусь).
Предыстория: мне тут советовали разные паттерны проектирования, я почитал о них и в итоге я понял, что для меня более всего в данный моммент подходит «Фасад». В общем, у меня есть объект $facade, который является, как Вы понимаете, фасадом.
Для работы системы я использую, как я говорил раньше, Smarty. Так вот, я создал в классе Facade свойство vars (private, array) и добавил метод vars($var, $value = false) (public), который сохраняет в свойстве-массиве vars новый элемент с индексом $var и значением $value, если оно не false и такого индекса нет. Если такой индекс есть, но переданное значение на false, то возвращается значение $this->vars[$var]. Это единственный публичный метод в классе. Когда я создаю экземпляры сложных частей сайта (модулей), я передаю им этот объект ($module = new ModuleName($this)) и потом, в конструкторе создаваемого объекта, сохраняю в его (нового объекта) приватные свойства объект Smarty. А, собственно, в чем смысл, ведь легче сделать static свойства, но в моем случае исходные значения останутся неизменными в любом случае, т.к. я предоставляю права только на чтение.
nazarpc, насколько мне известно, статические переменные нельзя просто так получить => придется каждый раз вызывать эту функцию и сохранять ее результат, что мне кажется еще более не удобным. Я думал о таком способе.
serso, denver, Vampiro: спасибо за ответы. Я думаю, что я лучше не буду просто так создавать классы, а функции буду объединять в неймспейсы (закину их в одну папку и напишу скриптик подгрузки всех сразу). Но я, к сожалению, забыл про один важный момент — свойства. Неймспейсы не влияют на переменные. Таким образом остается либо статичное использование в классах, либо прописывать global (вызывать через массив), я прав?
Опишу сейчас ситуацию: у меня в скрипте изначально работает только класс Engine, который, следуя из названия, обеспечивает работу всего (дальше подключаются другие классы и модули, но с ними нет проблем). Так вот, с методами-то я разобрался, но есть несколько свойств у этого класса, которые я использую везде (к примеру, у меня есть свойство Engine::$smarty, которое хранит объект шаблонизатора Smarty; есть еще и другие свойства). Так вот в константах нельзя хранить такие данные. Остается только вариант прописывать global?
Да, это в принципе, такие методы. Например, у меня есть класс Math в котором у меня некоторые методы для математических вычислений. Эти вычисления могут потребоваться от куда угодно.
Я не совсем уверен, когда стоит и когда не стоит использовать статичные методы. С одной стороны можно сделать все методы такими и вообще не создавать объектов, что может показаться удобным, но как-то теряется дух ОО программирования (ведь самого объекта-то и нет).