Это не действительно о том, лучше ли 'отделения, чем таблицы для расположения'. Кто-то, кто понимает CSS, может копировать любой дизайн с помощью 'таблицы расположения' довольно прямо. Реальная победа использует элементы HTML для того, для чего они там. Причиной Вы не использовали бы таблицы для non-tablular данных, является та же причина, Вы не храните целые числа как символьные строки - технология работает намного более легко при использовании его для цели, для которой это разработано. Если было когда-либо необходимо использовать таблицы для расположения (из-за недостатков браузера в начале 1990-х), это, конечно, не теперь.
Вы могли бы сделать объекты статичны, тогда у вас есть доступ к ним где угодно. Пример:
myClass::myFunction();
Это будет работать в любом месте сценария. Однако вы можете прочитать о статических классах и, возможно, использовать класс Singleton для создания обычного класса внутри статического объекта, который можно использовать где угодно.
Расширенный
Я думаю, что то, что вы пытаетесь сделать, очень аналогично тому, что я делаю с моим классом БД.
class myClass
{
static $class = false;
static function get_connection()
{
if(self::$class == false)
{
self::$class = new myClass;
}
return self::$class;
}
// Then create regular class functions.
}
Что происходит, когда вы устанавливаете соединение, используя $ object = myClass :: get_connection (), вы сможете выполнять любую функцию регулярно.
$object = myClass::get_connection();
$object->runClass();
Expanded
После того, как вы выполните статические объявления, вам просто нужно вызвать get_connection и присвоить возвращаемое значение переменной. Тогда остальные функции могут иметь то же поведение, что и класс, который вы вызвали с помощью $ class = new myClass (потому что это то, что мы сделали). Все, что вы делаете, это сохраняете переменную класса внутри статического класса.
class myClass
{
static $class = false;
static function get_connection()
{
if(self::$class == false)
{
self::$class = new myClass;
}
return self::$class;
}
// Then create regular class functions.
public function is_logged_in()
{
// This will work
$this->test = "Hi";
echo $this->test;
}
}
$object = myClass::get_connection();
$object->is_logged_in();
Вы можете передать текущие глобальные объекты в конструктор.
<?php
class Foo {
protected $m_db;
function __construct($a_db) {
$this->m_db = $a_db;
}
}
?>
Что ж, если у вас уже есть какой-то объект, с помощью которого вы ссылаетесь на систему блогов, вы можете скомпоновать эти объекты в него, чтобы они были $ blog-> db ()
и $ blog-> auth ()
или что-то еще.