Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Мастер велосипедов :)
 
 автор: Belkin   (02.10.2012 в 03:37)   письмо автору
 
 

Добрый день.

Сейчас появилась небольшая проблема, а точнее я запутался. В общем, как обычно мастерю очередной велосипед - фреймворк.

Проблема уперлась в static ф-ции и работу без создания объекта.

Есть главный класс, который работает на паттерне - синглетоне, содержит в себе массив с настройками и прочие методы, есть класс роутов. У него есть их массив, где указываются правила.

Вопрос.
Можно ли сделать этот массив с роутами - статическим? Для того, чтобы можно было к примеру добавлять правила как-то так:

Route::map(
'blog/peoples' => 'blog/users'
);

И вообще, я бы в большинстве случаев (эти случаи обычно файлы на тематику разных настроек) использовал бы статику, так как очень удобный доступ и не требует создания объектов.

Объясните пожалуйста в чем минус этой статики? И вообще чуть подробней на эту тему расскажите + стоит ли промышлять такие махинации или обычно создавать объекты.

Ps
Это не совсем по теме, но напишу: просто смотрел в ci, реализация как-то вообще иногда сделана странно. У них каждый конфиг обрабатывается, инклудеца тучей кода, который иногда кажется бессмысленным.

  Ответить  
 
 автор: cheops   (03.10.2012 в 09:15)   письмо автору
 
   для: Belkin   (02.10.2012 в 03:37)
 

Вы можете любую переменную сделать статической... не очень понятно, что вас смущает? Статика - это работа объектно-ориентированными средствами без дублирования памяти в объекте. Т.е. каждый статический экземпляр один и тот же для всех объектов. Статические методы обслуживают статические элементы класса, а зачастую используются без обращения к статическим элементам, просто как набор утилит в классе-контейнере.

>И вообще, я бы в большинстве случаев (эти случаи обычно файлы на тематику разных настроек)
>использовал бы статику, так как очень удобный доступ и не требует создания объектов.
Вполне себе подход.

  Ответить  
 
 автор: Belkin   (03.10.2012 в 23:52)   письмо автору
 
   для: cheops   (03.10.2012 в 09:15)
 

Я возможно сейчас скажу глупость на счет static, но я думал, что этот тип означает, что данный метод (или перем.) не делает что ли никаких "динам. действий" и возвращает неизменное значение, то есть статичесое (понимаю, что бред написал, но как-то так), а о том, что это "работа объектно-ориентированными средствами без дублирования памяти в объекте" даже не знал и не представлял. Спасибо.

  Ответить  
 
 автор: cheops   (04.10.2012 в 15:28)   письмо автору
 
   для: Belkin   (03.10.2012 в 23:52)
 

На самом деле - это работа без объекта, одним классом... просто в PHP "динамически выделяемая память при помощи new" несколько теряет смысл, так как вся память выделяется динамически и внутри движка, программист с этим дело не имеет. Однако, понятие динамический и статический осталось. Как впрочем и необходимость помнить, что каждый раз вызывая new, вы выделяете новый кусок памяти под объект - этот кусок памяти будет хранить данные, отличные от другого объекта. Изменение в одном объекте не отражается на данных другого объекта. А вот в случае статических переменных - все по другому, они общие для всех объектов, изменение в одном объекте, приводит к изменению значения во всех объектах. Статические методы изначально предназначены для обслуживания статических членов класса, но их очень удобно использовать для методов, которые не используют $this->, т.е. не обращаются к внутренним переменным объекта. Как правило, статическими методами оформляют различные манипуляции над деревьями и контейнерами объектов, разнообразные методы-утилиты. Как только вам нужно обратиться к члену или методу класса через $this-> метод перестает быть статическим - он задействует элементы конкретного текущего объекта.

  Ответить  
 
 автор: Belkin   (05.10.2012 в 18:04)   письмо автору
 
   для: cheops   (04.10.2012 в 15:28)
 

Спасибо за информацию.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования