수색…


소개

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-8Larry 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);
}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow