수색…
소개
PSR (PHP Standards Recommendation)은 FIG (Framework Interop Group)에서 제시하는 일련의 권장 사항입니다.
"그룹의 아이디어는 프로젝트 대표자들이 프로젝트 간의 공통점에 대해 이야기하고 함께 협력 할 수있는 방법을 찾는 것입니다."- FIG FAQ
PSR은 다음 상태에있을 수 있습니다 : 수락, 검토, 초안 또는 사용되지 않음.
PSR-4 : 오토로더
PSR-4 는 파일 이름을 통해 클래스를 자동로드하는 표준을 설명하는 승인 된 권장 사항 입니다. 이 권장 사항은 이전 (그리고 현재 사용되지 않음) PSR-0 의 대안으로 권장됩니다.
정규화 된 클래스 이름은 다음 요구 사항과 일치해야합니다.
\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
- 최상위 벤더 네임 스페이스 (예 :
Alphabet
) - 하나 이상의 하위 네임 스페이스 (예 :
Google\AdWord
)를 포함 할 수 있습니다. - 종료 클래스 이름 (예 :
KeywordPlanner
)
따라서 최종 클래스 이름은 Alphabet\Google\AdWord\KeywordPlanner
입니다. 정규화 된 클래스 이름도 의미있는 파일 경로로 변환되어야하므로 Alphabet\Google\AdWord\KeywordPlanner
는 [path_to_source]/Alphabet/Google/AdWord/KeywordPlanner.php
PHP 5.3.0부터 사용자 정의 오토로더 기능 을 정의하여 정의한 경로 및 파일 이름 패턴을 기반으로 파일을로드 할 수 있습니다.
# Edit your php to include something like:
spl_autoload_register(function ($class) { include 'classes/' . $class . '.class.php';});
위치 ( 'classes /')와 파일 이름 확장자 ( '.class.php')를 구조에 적용되는 값으로 대체하십시오.
작성자 패키지 관리자 는 PSR-4 를 지원합니다. 즉, 표준을 따르는 경우 작성자의 공급 업체 자동 공급기를 사용하여 프로젝트에서 클래스를 자동으로로드 할 수 있습니다.
# Edit the composer.json file to include
{
"autoload": {
"psr-4": {
"Alphabet\\": "[path_to_source]"
}
}
}
오토로더 파일 재생성
$ composer dump-autoload
이제 코드에서 다음을 수행 할 수 있습니다.
<?php
require __DIR__ . '/vendor/autoload.php';
$KeywordPlanner = new Alphabet\Google\AdWord\KeywordPlanner();
PSR-1 : 기본 코딩 표준
PSR-1 은 허용되는 권장 사항 이며 코드 작성 방법에 대한 기본 표준 권장 사항을 설명합니다.
- 클래스, 메서드 및 상수에 대한 명명 방식에 대해 설명합니다.
- PSR-0 또는 PSR-4 권장 사항을 요구 사항으로 채택합니다.
- 사용할 PHP 태그를 나타냅니다.
<?php
및<?=
그러나<?
. - 사용할 파일 인코딩 (UTF8)을 지정합니다.
- 또한 파일은 새로운 기호 (클래스, 함수, 상수 등)를 선언하고 다른 부작용을 일으키지 않거나 부작용이있는 논리를 실행하고 기호를 정의하지 않고 둘 다 수행해야한다고 명시합니다.
PSR-8 : 허깅 인터페이스
PSR-8 은 Larry Garfield 가 April Fools 농담으로 2014 년 4 월 1 일에 제안한 스푸핑 PSR ( 현재 Draft )입니다.
초안에는 객체를 Huggable
로 만들 수있는 인터페이스를 정의하는 방법이 설명되어 있습니다.
코드 개요에서 실행 :
<?php
namespace Psr\Hug;
/**
* Defines a huggable object.
*
* A huggable object expresses mutual affection with another huggable object.
*/
interface Huggable
{
/**
* Hugs this object.
*
* All hugs are mutual. An object that is hugged MUST in turn hug the other
* object back by calling hug() on the first parameter. All objects MUST
* implement a mechanism to prevent an infinite loop of hugging.
*
* @param Huggable $h
* The object that is hugging this object.
*/
public function hug(Huggable $h);
}