Использование автозагрузки не должно сказываться на производительности, поскольку сам класс не загружается до тех пор, пока он не будет вызван или использован. Конструкция автозагрузки в основном загружает класс по мере необходимости, если он еще не был создан.
Найдите в коде, где класс был создан первым. Если файлы классов не создаются автоматически, это не займет никакой памяти. Возможно, не все были созданы, но не сброшены, когда не нужны.
Когда вы найдете, где каждый экземпляр был создан или тот, который вы можете использовать, тогда:
//Gets the object name using the class.
echo get_class($classinstance) , "\n";
Вы можете справиться с этим, установив несколько точек останова, используя memory_get_peak_usage()
.
//Output memory usage at start of class instanciation.
echo memory_get_usage()
#memory_get_peak_usage() prior to 5.2.1.
$classobject1 = new theclass();
//Output memory usage after class instanciation.
echo memory_get_usage()
Теперь попробуйте то же самое, но на этот раз, используя unset () после использования класса:
//Output memory usage at start of class instanciation.
echo memory_get_usage()
#memory_get_peak_usage() prior to 5.2.1.
$classobject1 = new theclass();
unset($classobject1);
//Output memory usage after class instanciation.
echo memory_get_usage()
Таким образом, теоретически, можно сбросить любой неиспользуемый экземпляр в приложении, найти большие объекты, отладить.
Это разъясняет комментарии @ greg относительно ООП:
Взять этот кусок как образец:
class Tun{
private $run = 'i\'m running';
function run(){
echo $this->run;
}
}
echo Tun::run;
Выход:
Error: Fatal error: Undefined class constant 'run' in C:\Work\pro\debug.php on line 16
Вышеприведенный пример потому, что ссылается на функцию, которая использует ООП, в данном случае закрытую переменную класса $run
. Поскольку класс не создан (экземпляр объекта), он выдаст ошибку. Итак, да, вы можете использовать функции внутри класса по ссылке, но они в основном должны быть простыми процедурными или постоянными ссылками.
Надеюсь, это поможет.