Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Ооп в пхп
цитата
13/08/13 в 09:28
 Lexikon
раньше как то не сталкивался с этим, а тут стал писать код, и чет увлекся, и чтоб не путаться определенные части кода стал писать отдельно. Получилось несколько файлов. И чтоб не собирать это все воедино в одном файле вспомнил про ООП.
Создаю "index.php" тут будет все собираться и выполняться. и создаю из тех отдельных кусков "class.one.php", "class.two.php", "class.three.php"
Вот тут возниквопрос.
Можно ли создать один файл "config.php" в котором будут редактируемые значение переменных, при этом подключить это все к классам? Т.е. к примеру у меня массив, который должен быть редактируемый, и я его хочу занести в "config.php", но при этом все классы должны работать непосредственно с ним.
Незнаю как это правильно сделать.

просто вписывать этот массив в каждый клас, чет мне кажется глупо, при том что если нужно будет что то отредактировать придется каждый класс редактировать. icon_mad.gif
цитата
13/08/13 в 10:22
 ibiz
ну инклюдишь config.php в начале скрипта, а затем уже создаешь классы, присваиваешь переменные, инкапсуляция наследование полиморфизм trollface.png
цитата
13/08/13 в 11:44
 freeek
мне кажется тут уже дело касается шаблонов проектирования. ООП это оперирование абстракциями, взаимодействие объектов. ООП ради ООП ничего хорошего не даст.

как правило у любого приложения есть точка входа, в которой происходит инициализация окружения, в том числе подключения конфигураций и т.д. в файле config.php как правило набор констант, подключение к БД, кодировка и т.д.

так же есть мнение что глобальные переменные это зло и не стыкуется с практикой ооп. объявлять его как global не есть хорошо, да и может возникнуть путаница с областью видимости. как вариант объявить его статичным свойством некоего класса, который будет доступен в любой точке приложения.

но опять же, все слишком размыто и не совсем понятно, что именно требуется и не ясно требуется ли это делать именно так. icon_wink.gif
цитата
13/08/13 в 14:38
 Pentarh
Эволюционируй дальше - переходи на MVC icon_smile.gif
цитата
13/08/13 в 15:00
 Stek
Lexikon писал:
Незнаю как это правильно сделать.


В конфиге делаешь define нужных переменных, а далее используешь их в любом месте.
цитата
13/08/13 в 20:39
 Lexikon
ок спасибо. smail54.gif
хотел одно, а потом чет понесло icon_razz.gif , а если так, а если этак trollface.png
цитата
13/08/13 в 20:48
 idk2045
Код:
$params = array('bla', 'bla2');
define(SITE, 'www.domain.com');

class One {
  function hehe() {
    global $params;
    echo $params[0];
    echo SITE;
  }
)
цитата
13/08/13 в 21:45
 Yacc
grozny писал:
class One {
  function hehe() {
    global $params;

Это где так кодить учат? В кулинарном техникуме что ли? icon_smile.gif

Вот упрощённая до нельзя, но архитектурно грамотная схема:

configs/default.php
Код:
<?php
return array(
    'foo' => 'bar'
);


classes/config.php
Код:
<?php
class config {
    static function load($config = 'configs/default.php') {
        return file_exists($config) ? require $config : false;
    }
}


classes/myclass.php
Код:
<?php
class myclass {
    var $config;
    function __construct() {
        $this->config = config::load();
    }
}


Эта страница в полной версии