در این مقاله از سونلرن قصد داریم تا شما را با ویژگی PHP Late Static Binding (پیاچپی لِیت استاتیک بایندینگ) آشنا کنیم که از نسخهی 5.3 به PHP اضافه شده است.
اجازه دهید تا آموزش خود را با یک مثال ساده شروع کنیم. لطفاً به کد زیر نگاه کنید:
<?php class Model{ protected static $tableName = 'Model'; public static function getTableName(){ return self::$tableName; } } class User extends Model{ protected static $tableName = 'User'; } echo User::getTableName(); // Model, not User
اگر بخواهیم توضیحی دربارهی این کد PHP و مشکلی که در نبود PHP Late Static Binding وجود دارد، داشته باشیم:
برای حل این مشکل، از نسخهی 5.3 در PHP یک ویژگی جدید با نام PHP Late Static Binding معرفی شده است که به جای استفاده از کلیدواژهی self، شما میتوانید از کلیدواژهی static استفاده کنید تا به همان کلاس واقعی در زمان صدا زدن اشاره شود.
اکنون اجازه دهید تا کد خود را ویرایش کنیم و نتیجهی مورد انتظار خود را با استفاده از مفهوم PHP Late Static Binding در خروجی ببینیم:
<?php class Model{ protected static $tableName = 'Model'; public static function getTableName(){ return static::$tableName; } } class User extends Model{ protected static $tableName = 'User'; } echo User::getTableName(); // User
توجه داشته باشید که ::static تنها به متودها و پراپرتیهای استاتیک اشاره میکند.