在定义对象时引用PHP对象内部的数组



我有这个对象定义

return (object) [
// the database information
'db_info' => [
'type' => 'mysql',
'server' => 'localhost',
'database' => 'myshop',
'username' => 'root',
'password' => 'password',
'tableprefix' => 'password',
'charset' => 'password'
],
// the database tables
'tables_info' => [
'tblcountries' => db_info.database . '.'. db_info.tableprefix . 'countries',
'tblsettings' => db_info.database . '.'. db_info.tableprefix . 'settings'
]
]

我正在尝试使用在同一对象中定义的一些数组

在tables_info数组中

'tblcountries' => db_info.database . '.'. db_info.tableprefix . 'countries`

有可能吗?如果有,怎么。。

您可以通过两个步骤完成,如

$obj =  (object) [
'db_info' => [
'type' => 'mysql',
'server' => 'localhost',
'database' => 'myshop',
'username' => 'root',
'password' => 'password',
'tableprefix' => 'password',
'charset' => 'password'
]
];

$obj->table_info = [
'tblcountries' => $obj->db_info['database'] . '.' . $obj->db_info['tableprefix'] . 'countries',
'tblsettings' => $obj->db_info['database'] . '.'. $obj->db_info['tableprefix'] . 'settings'
];
print_r($obj);

结果

stdClass Object
(
[db_info] => Array
(
[type] => mysql
[server] => localhost
[database] => myshop
[username] => root
[password] => password
[tableprefix] => password
[charset] => password
)
[table_info] => Array
(
[tblcountries] => myshop.passwordcountries
[tblsettings] => myshop.passwordsettings
)
)

或者,如果你希望所有东西都是一个对象,而不是中有数组的对象

$obj =  (object) [
'db_info' => (object) [
'type' => 'mysql',
'server' => 'localhost',
'database' => 'myshop',
'username' => 'root',
'password' => 'password',
'tableprefix' => 'password',
'charset' => 'password'
]
];
$obj->table_info = (object) [
'tblcountries' => $obj->db_info->database . '.' . $obj->db_info->tableprefix . 'countries',
'tblsettings' => $obj->db_info->database . '.'. $obj->db_info->tableprefix . 'settings'
];
print_r($obj);

结果

stdClass Object
(
[db_info] => stdClass Object
(
[type] => mysql
[server] => localhost
[database] => myshop
[username] => root
[password] => password
[tableprefix] => password
[charset] => password
)
[table_info] => stdClass Object
(
[tblcountries] => myshop.passwordcountries
[tblsettings] => myshop.passwordsettings
)
)

最新更新