Class Config

dakata__92

Super Moderator
Замислих се преди време дали не е добре точно да се ползва този начин за съхраняване на конфигурационна информация с наличието на клас. Според вас добра идея ли е? Като пример ще дам:
PHP:
class Config {
    static $DB_SERVER    = 'localhost';
    static $DB_NAME      = 'abc';
    static $DB_USERNAME  = 'admin';
    static $DB_PASSWORD  = '12345';

    static $WEBSITE_NAME = 'My New Website';
    static $IMAGE_DIR    = 'img';
}

Викането става с Config::$DB_SERVER примерно и естествено се наследяват тези променливи, като ако им задам протектид ще могат да се използват навсякъде, въпреки, че така и лесно ще се променят което е лошо по веригата ако се замисли човек.
 
Формата няма много голямо значение. Въпроса е по-скоро до защита на данните от външна намеса. Особено ако хостинга е споделен. Хубаво е този файл да бъде извън коренната директория на уеб сървъра (да не може да се достъпи през него), а също така - може да се помисли за криптиране. Всички хостинг компании поддържат криптиране на файловете, но тяхното конвертване става с доста скъп софтуер на Зенд...
 
lamerko каза:
Формата няма много голямо значение. Въпроса е по-скоро до защита на данните от външна намеса. Особено ако хостинга е споделен. Хубаво е този файл да бъде извън коренната директория на уеб сървъра (да не може да се достъпи през него), а също така - може да се помисли за криптиране. Всички хостинг компании поддържат криптиране на файловете, но тяхното конвертване става с доста скъп софтуер на Зенд...

Да кажем, че го направих така:
PHP:
<?php
namespace CCF\DC;

class DC{
	public $site = array(
		"errors" => "E_ALL", // 0, E_ALL^E_NOTICE
		"" => "",
		"" => "",
		"" => ""
	);
	public $dbase = array(
		"host" => "localhost",
		"user" => "root",
		"pass" => "",
		"name" => "oop",
		"port" => "",
		"error" => "No connection with database.",
		"sql" => "SQL error.",
		"status" => "500"
	);
	
	public function __construct(){
	
	}
}
След което си го викам в главният апликатор и от там нататъка разпределям опциите така:

$this->DC = new \CCF\DC\DC();
return new \CCF\DB\MySQLi($this->DC->dbase);

Като самият апликатор ми е Сингълтон и така базата е с една конекция. Сега за защитата на самият файл повече ме притеснява дали добре съм го драснал като идея и така.
 
Така и така си тръгнал с класове - щом ще правиш инстанция, а няма да ползваш статични свойства - в конструктура направо избумкай конекцията и върни ресурса.
 
lamerko каза:
Така и така си тръгнал с класове - щом ще правиш инстанция, а няма да ползваш статични свойства - в конструктура направо избумкай конекцията и върни ресурса.
Така и правя просто дадох в момента части от кода и то от различни методи. Просто така по този начин доста приятно ми се получава разпределението на опциите с масив когато даден конструктор го приема. :)
 

Back
Горе