English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
تحميل تلقائي php:
في php5 قبل، إذا كنا نريد استخدام فئة أو طريقة فئة، يجب علينا تضمينها أو مطالبة بها قبل استخدامها، كل مرة نستخدم فئة، يجب علينا كتابة include، مزعج
يريد كتابة php بسيطة، أفضل أن يتم العثور على فئة عند استدعائها إذا لم يتم تشغيلها مسبقًا، وأن يتم تضمينها تلقائيًا~
وهكذا ظهرت وظيفة __autoload.
عادةً ما يتم وضعها في فئة الدخول للتطبيق، مثل في discuz، يتم وضعها في ملف class_core.php.
سأبدأ بذكر مثال بسيط:
حالة أولى:المحتوى في ملف A.php كالتالي
<?php class A{ public function __construct(){ echo 'fff'; } } ?>
المحتوى في ملف C.php كالتالي:
<?php function __autoload($class) { $file = $class . '.php'; if (is_file($file)) { require_once($file); } } $a = new A(); // هنا سيتم استدعاء __autoload تلقائيًا، وتضمين ملف A.php ?>
حالة ثانية:أحياناً أتمنى أن أتمكن من تعريف autoload، وأتمنى أن أطلق على اسم أكثر إثارة loader، فإن ملف C.php يجب أن يكون كالتالي:
<?php function loader($class) { $file = $class . '.php'; if (is_file($file)) { require_once($file); } } spl_autoload_register('loader'); // تسجيل دالة تحميل تلقائي، لتغطية __autoload الموجود $a = new A(); ?>
الحالة الثالثةأريد أن يكون أعلى مستوى من الجمال، باستخدام فئة لتحكم في التحميل التلقائي
<?php class Loader { public static function loadClass($class) { $file = $class . '.php'; if (is_file($file)) { require_once($file); } } } spl_autoload_register(array('Loader', 'loadClass')); $a = new A(); ?>
هذا هو الشكل الأمثل.
عادة ما نضع spl_autoload_register(*) في ملف الدخول، أي في بداية الملف. على سبيل المثال، طريقة discuz.
if(function_exist('spl_autoload_register')){ spl_autoload_register(array('core','autoload')); // إذا كان PHP 5 أو أعلى، فإنه يوجد دالة تسجيل، فإنه يسجل دالة autoload الخاصة بك في class core كدالة تحميل تلقائي } function __autoload($class){ // إذا لم يكن كذلك، فإنه يعيد كتابة الدالة الأصلية في PHP __autoload، ليعتمد على دالة core الخاصة به. return core::autoload($class); } }
هذا الكود يوضع في بداية ملف الدخول، وهو بالتأكيد ممتاز ~
هذا المقال الذي يوضح بعمق آلية التحميل التلقائي للفئات في PHP هو كل ما أشاركه معكم، وأتمنى أن يكون مرجعًا جيدًا وأن تكونوا قد ساندتم دروس النفخ.