Использование слишком много include() в php
У меня есть привычка использовать include() много в моих PHP-скриптах. Я хотел бы знать, является ли это хорошим подходом. Я просто использую include много, потому что это делает код лучше для будущего программирования.
3 ответов
используйте функцию автоматической загрузки php
пример:
function __autoload($class_name) {
include $class_name . '.php';
}
всякий раз, когда вы создаете новый класс. PHP автоматически вызывает функцию _ _ autoload с одним аргументом i.e имя класса. рассмотрим следующий пример
$user = new User():
при создании экземпляра объекта user здесь вызывается функция autoload, она пытается включить файл из того же каталога. (со ссылкой на вышеуказанную функцию автозапуска). теперь вы можете реализовать свою собственную логику, чтобы классы автоматической загрузки. независимо от того, в каком каталоге он находится. для получения дополнительной информации ознакомьтесь с этой ссылкой http://in.php.net/autoload.
обновление: @RepWhoringPeeHaa, ты сказал это правильно, приятель. есть больше преимуществ в использовании spl_autoload, а затем простой функции автозапуска. основное преимущество, которое я вижу, заключается в том, что можно использовать или регистрировать более одной функции.
function autoload_component($class_name)
{
$file = 'component/' . $class_name . '.php';
if (file_exists($file)) {
include_once($file);
}
}
function autoload_sample($class_name)
{
$file = 'sample/' . $class_name . '.php';
if (file_exists($file)) {
include_once($file);
}
}
spl_autoload_register('autoload_component');
spl_autoload_register('autoload_sample');
Если вы разрабатываете объектно-ориентированный файл для каждого класса, рассмотрите возможность реализации функции автозапуска, которая автоматически вызывает include
когда класс используется, но еще не загружен:
$callback = function($className) {
// Generate the class file name using the directory of this initial file
$fileName = dirname(__FILE__) . '/' . $className . '.php';
if (file_exists($fileName)) {
require_once($fileName);
return;
}
};
spl_autoload_register($callback);