Почему это возвращает массив вместо объекта и как я могу вернуть объект?
Class MyClass {
private $filename = '...';
private $_ini_array;
public function __construct() {
// Get the config file data
$ini_array = parse_ini_file( $filename, true );
$this->_ini_array = $ini_array;
}
public function __get( $param ) {
return $this->_ini_array[ $param ];
}
}
вызывается ...
$c = new MyClass();
var_dump( $c->db_pgsql );
возвращения ...
array(6) {
["data"]=>
string(4) "test"
...
и кастинг по ...
return (object) $this->_ini_array;
возвращения ...
object(stdClass)#2 (6) {
["data"]=>
string(4) "test"
...
пока я хочу вернуться ...
object(MyClass)#2 (6) {
["data"]=>
string(4) "test"
...
Большое спасибо!
Обновление. Решаемые.
Я закончил тем, что написал следующий класс, который в значительной степени выполняет мои цели. Пожалуйста, прокомментируйте, если вы видите какие-либо вредные привычки, небрежный код и т. Д.
class Config {
private $config_filename = '../include/config.ini';
public function __construct( array $array=null ){
if ( $array ) {
foreach ( $array as $key => $val ) {
$this->$key = $val;
}
} else {
$ini_array = parse_ini_file( $this->config_filename, true );
foreach( $ini_array as $key => $val ){
$this->$key = new self( $val );
}
}
}
public function __get( $param ) {
return $this->$param;
}
}
Который, с моим конкретным тестовым конфигурационным файлом, производит объект, который выглядит как ...
VarDump: object(Config)#1 (3) {
["config_filename:private"]=>
string(21) "../include/config.ini"
["heading1"]=>
object(Config)#2 (3) {
["config_filename:private"]=>
string(21) "../include/config.ini"
["str1"]=>
string(4) "test"
["str2"]=>
string(5) "test2"
}
["heading2"]=>
object(Config)#3 (2) {
["config_filename:private"]=>
string(21) "../include/config.ini"
["str1"]=>
string(9) "testagain"
}
}
Я бы предпочел не делать рекурсивное дублирование свойства ["config_filename: private"], как это было сделано. Но я не мог придумать способ обойти это. Так что, если вы знаете об обходном пути, тогда я буду благодарен за комментарий.
Спасибо за всю помощь, чтобы направить меня в правильном направлении.