Ну, я пытаюсь адаптировать свой старый код к более объектно-ориентированной модели, но я нахожу трудности в этом. Структура моих классов будет выглядеть так:Упорядочить и связать класс в PHP
// config.php
class Config {
const Setting1 = 'value';
const Setting2 = 'value';
}
// main.php
include 'config.php'
class Main {
var $Config;
var $Info;
var $Db;
function _construct() {
$this->Config = &new Config;
$this->Info = &new Info;
$this->Db = &new Db($this);
}
}
class Info {
function getSetting($a, $Config) {
if ($a>0) return $Config::Setting1;
return $Config::Setting2;
}
}
class Db {
function _construct($Main) {
$Setting1 = $Main->Config::Setting1;
}
}
// index.php
$Main = new Main;
echo $Main->Info->getSetting(1, $Main->Config);
Итак, как видите, в этом коде есть неправильные вещи. Я хочу иметь все внутри класса Main
, создать объект $Main
и оттуда получить доступ к любому другому объекту. Db
потребуется постоянная от Config
, но я не хочу создавать новые Config
внутри Db
, но используйте один из Main
. То же самое происходит с Info.
, который является объектом, вы не можете получить доступ из основных в настоящее время? – steven
Проблема заключается в этом коде '$ Setting1 = $ Main-> Config :: Setting1'. Я получаю ошибку T_PAAMAYIM_NEKDOTAYIM – ali
Что было бы целью такого дизайна? Во-первых, var следует заменить частным, защищенным или общедоступным. Во-вторых, вы могли бы написать основные методы, которые будут работать с внутренними объектами, такими как метод write getSetting ($ a), который автоматически передает Config на внутренний член, чтобы упростить использование основного класса для чтения – insanebits