Coming из JavaScript, я привык к наличию всех своих функций, вложенных в объекты, как так:Как визуализировать набор функций в PHP вложенный массив/объект
var app = {
something: {
something: {
some_variable:"something",
something: function() {
return this.some_variable;
}
}
}
};
console.log(app.something.something.something()); // "something"
Это служит хорошим способом сохраняйте все функции, классифицированные и названные логически (для меня).
В PHP, я делал это с помощью массивов:
$app=[
"name"=>"my_app",
"database"=>[
"password"=>"497624779",
"connect"=>function(){
//connect to db here using $GLOBALS["app"]["database"]["password"]
},
"update"=>function(){
//update records, etc
}
],
"page"=>[
"data"=>[
"page_1"=>[
"title"=>"Home",
"icon"=>"",
"etc"=>""
],
"page_2"=>[
"title"=>"",
"icon"=>"",
"etc"=>""
],
"page_3"=>[
"title"=>"",
"icon"=>"",
"etc"=>""
]
],
"loading"=>function($page_name){
return $GLOBALS["app"]["page"]["data"][$page_name]["title"]." is loading...";
}
]
];
Это означает, что я могу это сделать:
$app["database"]["connect"]();
echo $app["page"]["loading"]("page_1"); // "Home is loading..."
Как бы перенести это с помощью объектов, так что я могу это сделать :
$app->database->connect(); // connect function would use $this->password, not GLOBALS
$app->page->loading("page_1");
к сожалению, все учебники там не показывают, как гнездо несколько объектов, как мой javascr Пример ipt выше. Мне нравится древовидная структура массивов для визуализации, но я не могу найти способ, чтобы определить объект таким образом - только примеры, как это:
$app=new stdClass();
$app->database=new stdClass();
$app->database->password="497624779";
//etc
т.е. не очень визуальные вообще. Если я реорганизую весь свой код таким образом, я заблужусь в нем, если я не буду периодически выполнять var_dump объекта.
Смутный вопрос, я знаю. Может кто-то указать мне верное направление?
Используется для создания объекта-прототипа. Вы не привыкли работать в объектно-ориентированном шаблоне из определения класса. Определите каждый класс самостоятельно, сохраните каждый из них в собственном файле. Не пытайтесь все это в одном большом месте. Также читайте об инъекции зависимостей. – k0pernikus
И избегайте использования 'stdClass'. Определите свои собственные классы. – k0pernikus