۱ نوید احمدزاده
autoloading
جامعه پی اچ پی ایجاد شده در ۰۶ خرداد ۱۴۰۴

الان توی این کد من کلاس Person رو ادد نکردم ولی تو خرجی خودش تو اتو لودینگ ادد میکنه 

<?php
include "autoload.php";
$t1=new Teacher;
$t1->printName();
$S1= new Student();
$S1->printName();
// end{code};

From Autoloader => Person called
From Autoloader => Teacher called
Teacher-281
From Autoloader => Student called
Student-294

علتش به خاطر اینه که کلاس person کلاس پدر هستش ؟ و وقتی Teacher رو صدا میکنه اتوماتیک کلاس پدرش رو هم صدا میکنه ؟

یه چیزه دیگه اینکه من توی فایل Teacher.php فایل Person.php رو include نکردم ولی خودش تشخیص داده 

 

 

سلام،

وقتی کلاس Teacher رو instantiate می‌کنی (با new Teacher)، چون این کلاس از Person ارث‌بری کرده، PHP میره دنبال کلاس پدر. نیازی نیست توی Teacher.php بنویسی include "Person.php" چون autoloader خودش این کارو انجام میده.

این یکی از فواید autoloading هست، نه تنها فایل‌های کلاس‌هایی که مستقیم استفاده می‌کنی رو لود می‌کنه، بلکه وابستگی‌هاشون (مثل کلاس‌های پدر) رو هم خودکار پیدا و لود می‌کنه.

محسن موحد ۰۷ خرداد ۱۴۰۴، ۰۶:۵۷