مرور کلی
۱- مرور کلی
این PSR به ارائه مشخصاتی، برای کلاس های autoloading از مسیرهای فایل می پردازد. این استاندارد کاملا انطباق پذیر است و می تواند در سایر استانداردها از جمله PSR-0 استفاده شود.همچنین این PSR مشخص می کند که کدام فایل ها بر طبق مشخصاتشان به صورت خودکار بارگزاری خواهند شد.
۲-مشخصات
۱- اصطلاح “کلاس” به کلاس ها، واسط ها، ویژگی ها و سایر ساختارهای مشابه اشاره دارد.
۲- یک نام کلاس کامل به فرم زیر است:
\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
- نام کلاس باید دارای یک فضای نام top-level باشد، که به نام “فضای نام vendor” نیز معروف است.
- نام کلاس ممکن است یک یا چند نام زیر فضای نام(sub-namespace) داشته باشد.
- خط زیرین ها(_) هیچ معنای خاصی در هیچ بخشی از نام کلاس ندارند.
- کاراکترهای حروف الفبا در نام کلاس ممکن است هر ترکیبی از حروف کوچک و بزرگ باشند.
- تمام نام کلاس ها باید به صورت case-sensitive ارجاع داده شوند.
۳-هنگام بارگذاری یک فایل که مربوط به یک نام کلاس است …
- یک دنباله بهم پیوسته از یک یا چندفضای نام و زیر فضای نام(sub-namespace)، که شامل جدا کننده فضای نام نباشد، در نام کلاس کامل (یک “پیشوند فضای نام”) به حداقل یک “دایرکتوری پایه” مربوط می شود.
- نام های زیر فضای نام مرتبط باهم بعد از “پیشوند فضای نام ” مربوط به یک زیر پوشه در یک “دایرکتوری پایه” است،که در آن جداکننده فضای نام نشان دهنده جدا کننده های دایرکتوری است. نام زیر دایرکتوری باید با نام های زیر فضای نام مطابقت داشته باشد.
- نام کلاس های terminating مربوط به نام فایل هایی است که به php. ختم می شوند. نام فایل باید با نام کلاس terminating مطابقت داشته باشد.
۴- پیاده سازی Autoloader نباید استثنائات را به تصویر بکشد، نباید errorها را در هر سطحی افزایش دهند، و نباید هیچ مقداری را برگرداند.
۳- مثال
جدول زیر مسیر فایل مربوطه را برای یک نام کلاس کامل ، پیشوند فضای نام و دایرکتوری پایه نشان می دهد.
Resulting File Path | Base Directory | Namespace Prefix | Fully Qualified Class Name |
---|---|---|---|
./acme-log-writer/lib/File_Writer.php | ./acme-log-writer/lib/ | Acme\Log\Writer | \Acme\Log\Writer\File_Writer |
/path/to/aura-web/src/Response/Status.php | /path/to/aura-web/src/ | Aura\Web | \Aura\Web\Response\Status |
./vendor/Symfony/Core/Request.php | ./vendor/Symfony/Core/ | Symfony\Core | \Symfony\Core\Request |
/usr/includes/Zend/Acl.php | /usr/includes/Zend/ | Zend | \Zend\Acl |
برای مشاهده مثال هایی در مورد پیاده سازی autoloaderهای مطبق با مشخصات(specification)، لطفا فایل مثال ها را ببینید.پیاده سازی مثال نباید به عنوان بخشی از مشخصات(specification) شناخته شود و می تواند در هر زمان تغییر کند.
منبع : http://www.php-fig.org/