Можно ли включить файл с переменными php внутри класса? И как бы лучший способ, чтобы я мог получить доступ к данным внутри всего класса?
Я искал это некоторое время, но ни один из примеров не работал.
Спасибо, Jerodev
Можно ли включить файл с переменными php внутри класса? И как бы лучший способ, чтобы я мог получить доступ к данным внутри всего класса?
Я искал это некоторое время, но ни один из примеров не работал.
Спасибо, Jerodev
лучший способ - загрузить их, а не включать их через внешний файл
например:
// config.php
$variableSet = array();
$variableSet['setting'] = 'value';
$variableSet['setting2'] = 'value2';
// load config.php ...
include('config.php');
$myClass = new PHPClass($variableSet);
// in class you can make a constructor
function __construct($variables){ // <- as this is autoloading see http://php.net/__construct
$this->vars = $variables;
}
// and you can access them in the class via $this->vars array
Собственно, вы должны добавить данные в переменную.
<?php
/*
file.php
$hello = array(
'world'
)
*/
class SomeClass {
var bla = array();
function getData() {
include('file.php');
$this->bla = $hello;
}
function bye() {
echo $this->bla[0]; // will print 'world'
}
}
? >
С точки зрения производительности было бы лучше, если вы будете использовать .ini файл для хранения ваших настроек.
[db]
dns = 'mysql:host=localhost.....'
user = 'username'
password = 'password'
[my-other-settings]
key1 = value1
key2 = 'some other value'
И затем в вашем классе вы можете сделать что-то вроде этого:
class myClass {
private static $_settings = false;
// this function will return a setting value if setting exists, otherwise default value
// also this function will load your config file only once, when you try to get first value
public static function get( $section, $key, $default = null ) {
if ( self::$_settings === false ) {
self::$_settings = parse_ini_file( 'myconfig.ini', true );
}
foreach ( self::$_settings[$group] as $_key => $_value ) {
if ( $_key == $Key ) return $_value;
}
return $default;
}
public function foo() {
$dns = self::get( 'db', 'dns' ); // returns dns setting from db section of your config file
}
}