У меня есть старый сайт, чтобы вывести его на стандартный уровень, но я должен каким-то образом подходить к делу из-за проблем с синхронизацией и определенных ограничений, что мешает моему желанию реструктурировать весь сайт должным образом снизу вверх.Как узнать, какие объекты на странице используют определенный класс
Основная часть работы включает в себя обновление различных файлов include
. Таким образом, они включают в себя файлы называются на страницу, которая использует класс для создания объекта, как обычно,
Проблемы:
Есть много страниц, и они не всегда закодированы (благодаря суб- стандартные предыдущие разработчики на сайте), поэтому иногда класс я хочу использовать в качестве объекта под названием $database
, иногда на других страницах объект называется $dataBase
, $connection
, и т.д. и т.п.
есть несколько включает в себя, что я работая, и я чувствую, что необходимость создания нового объекта для каждого из них на каждой странице крайне неэффективна, e этот вопрос:
Могу ли я узнать из PHP, какие переменные объекта, если таковые имеются, используют определенный класс?
Иллюстрация:
index.php Page
require "class.sausages.inc.php";
$hotdog = new sausages();
$hotdog->somefunction();
//etc. etc.
include "some_file_i_need_to_work_on.php";
include "/folder/some_other_file_I_work_on.php";
//etc. etc.
Page index2.php
require "class.sausages.inc.php";
$hotdogs = new sausages();
$hotdogs->someOtherfunction();
//etc. etc.
include "some_file_I_need_to_work_on_3.php";
include "/folder/some_other_file_I_work_on.php";
//etc. etc.
Так мне нужно работать на включает в себя и так для каждого включаемого файла I не знаю точно$name
объекта переменной, созданного в родительском файле include. Все, что у меня есть, это то, что он использует класс sausages
.
Решение пытается
Я прочитал how to check if object of a class already exists in PHP?, который в значительной степени тот же вопрос, но решение отмеченное здесь является создание глобального, что я чувствую себя еще один слой и, честно говоря, я не совсем комфортно это эффективное решение.
То, что я пытаюсь избежать, это ситуация, когда каждый из них включает на определенной странице, должен генерировать свой собственный object
, все из того же класса (обычно), установленного на родительской странице.
Как нет никаких guarentee в одном включении, если включено другое включение, я не думаю, что могу сгенерировать объект, который все может использовать вместе, или если могу, как я могу это сделать?
Что бы я хотел
Я хочу быть в состоянии найти способ установить в PHP:
имеет какой-либо объект был создан с помощью этого класса?
Да? Используйте этот объект в этом include.
нет? сгенерировать новый объект из файла класса.
Возможно ли это?
Примечания:
Есть около десятка включаемых файлов,
Есть много родительских страниц (50+). Я думаю, что редактирование каждого из них было бы неэффективным (но это будет сделано в будущем)
Некоторые родительские страницы содержат некоторые файлы include, некоторые из них содержат другие. В каких файлах (в зависимости от того, что я могу сказать до сих пор) не содержится никаких гарантий, которые включены.
Большинство, но не все родительские страницы уже установили объект класса.
PHP 5.6.16
У вас может быть более легкая жизнь, если вы будете использовать интерфейсы –
@bub Не могли бы вы проиллюстрировать, как интерфейсы мне помогут здесь? Как я уже сказал, это унаследованный сайт, который был изменен, снова и снова, разными людьми в течение длительного периода времени. Я хотел бы реструктурировать его с нуля, но это не то, что я могу сделать, на данный момент – Martin
Несмотря на то, что использование интерфейсов - это, как правило, хорошая вещь, с реализацией глобальной переменной определенный интерфейс не принесет вам никакой пользы эта ситуация. – Karolis