Hossein Yusuf-zadeh
Hossein Yusuf-zadeh
خواندن ۱ دقیقه·۵ سال پیش

internal class in php

سلام. این نوشته برداشت من از یه مقاله جالبه. در زبان زیبای PHP‌‌ همه کلاس های ما حالتشون public هست و خب این بعضی جاها یه سری مشکلاتی برامون به وجود میاره. یعنی ما نمیتونیم کلاس هایی در یک کتابخانه داشته باشیم که برای برخی کلاس ها قابل دیدن باشن و کاربرها به اونا خارج از کتابخونه دسترسی نداشته باشن. حالا php از قدیم الایام راه حلی برای جلوگیری از extend داشت که در ادامه میبینید. کلمه ی کلیدی final که بحث ما این جا این نیست!

PHP 5 introduces the final keyword, which prevents child classes from overriding a method by prefixing the definition with final. If the class itself is being defined final then it cannot be extended.

حالا فرضا شما یه کتابخانه برای کار با نقشه گوگل دارین و برای پارس جواب ها هم یه کلاس دیگه دارین که internal کتابخونه شماست. خب شما برای این کلاس کلمه final رو میزارین ولی میخواین به کاربر هم بگین این کلاس من internal هست شما استفاده نکن. در phpstorm بلاک توضیحی هست که این کار رو انجام میده.

/**
* @internal
*/

final class StringHelper
{
public static function sanitize(string $value): string {}
}

خب بعد از تعریف حالا وقتی کسی بخواد از این کلاس استفاده کنه این شکلی میشه :)

internal class
internal class

اینم منبع بخونین خودتون.

phpintrnalphpstorm
شاید از این پست‌ها خوشتان بیاید