Подтвердить что ты не робот

Php включает файл в класс

Можно ли включить файл с переменными php внутри класса? И как бы лучший способ, чтобы я мог получить доступ к данным внутри всего класса?

Я искал это некоторое время, но ни один из примеров не работал.

Спасибо, Jerodev

4b9b3361

Ответ 1

лучший способ - загрузить их, а не включать их через внешний файл

например:

// 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

Ответ 2

Собственно, вы должны добавить данные в переменную.

<?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'
    }
}

? >

Ответ 3

С точки зрения производительности было бы лучше, если вы будете использовать .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
    }
}