>  기사  >  백엔드 개발  >  PHP 사양의 PSR 사양

PHP 사양의 PSR 사양

不言
不言원래의
2018-04-26 14:42:313723검색

이 기사에서는 PHP 사양 중 psr 사양을 소개합니다. 이제 관심 있는 친구들과 함께 살펴보세요.

참고: http://psr.phphub.org/

PSR은 공식 문서가 아닙니다. PHP 표준 . 하지만 Zend 및 Symfony2와 같은 잘 알려진 PHP 프로젝트에서 추출한 일련의 표준이 현재 점점 더 많은 커뮤니티 프로젝트에 합류하여 이 표준을 따르고 있습니다.



  • PSR-0 자동 로딩

    PSR-2 코드 스타일
  • PSR-3 로그 인터페이스
  • PSR-4 지정 방법 클래스 정의를 자동으로 로드하는 파일 경로
  • PSR-1 기본 코드 사양

Ben 이 사양은 코드의 기본 요소에 대한 관련 표준을 공식화하여 높은 수준의 클래스 정의를 보장합니다. 공유 PHP

코드 간의 기술적 상호 운용성.

파일·

PHP코드 파일

반드시 또는 <span style="color:#858080;배경:#F9FAFA;"><?=</span></code > <span style="color:#7D8688;"> </span><code><span style="color:#858080;background:#F9FAFA;"><?php</span> <span style="color:#858080;background:#F9FAFA;"><?=</span> 标签开始;

· PHP代码文件 必须 <span style="color:#858080;background:#F9FAFA;">不带</span><span style="color:#858080;background:#F9FAFA;"> BOM </span><span style="color:#858080;background:#F9FAFA;">的</span><span style="color:#858080;background:#F9FAFA;"> UTF-8</span> 编码;

· PHP代码中 应该 只定义类、函数、常量等声明,或其他会产生 <span style="color:#FF0000;background:#F9FAFA;">副作用</span> 태그 시작 · PHP코드 파일

필수

로 끝나야 합니다. <코드>

<span style="color:#858080;배경:#F9FAFA;">BOM 🎜<span style="color:# 858080 없음 ;배경:#F9FAFA;">UTF-8🎜🎜 🎜🎜 인코딩; 🎜🎜 🎜🎜🎜🎜· 🎜🎜PHP🎜🎜코드에서 🎜🎜 🎜🎜🎜은 🎜🎜🎜 🎜🎜 클래스만 정의 , 함수, 상수 등 🎜🎜 선언 🎜🎜 또는 기타 🎜 🎜Generate🎜🎜🎜<span style="color:#FF0000;Background:#F9FAFA;">부작용 🎜🎜 🎜🎜 작업 🎜🎜(예: 파일 출력 생성 및 🎜🎜 .ini 🎜🎜 구성 파일 수정 등) 둘 다 하나만 선택할 수 있습니다. 🎜🎜

· 클래스 이름 지정 must follow<span style="color:#858080;Background:#F9FAFA;">StudlyCaps <code><span style="color:#858080;background:#F9FAFA;">StudlyCaps</span> 大写开头的驼峰命名规范;

· 每个类都独立为一个文件,且命名空间至少有一个层次:顶级的组织名称(vendorname

  • 类属性小写开头驼峰 $studlyCaps

  • 类方法:小写开头驼峰

常量

· 类中的常量所有字母都 必须 大写,单词间用下划线分隔;

  • 方法名称 必须 符合 <span style="color:#858080;background:#F9FAFA;">camelCase</span>

  • Capital camel Case

명명 규칙;

·       각 클래스는 독립적인 파일이며 네임스페이스에는 최상위 조직 이름(

vendorname)이라는 하나 이상의 수준이 있습니다.

클래스 속성: 소문자 카멜 케이스로 시작 $studlyCaps클래스 메소드: 소문자 카멜 케이스로 시작

상수

  • ·

    클래스의 상수에는 이 있어야 합니다.

  • 대문자, 밑줄로 단어 구분

    메서드 이름 반드시은 소문자로 시작하는 카멜 케이스의 <span style="color:#858080;Background:#F9FAFA;">camelCase</span> 스타일 명명 규칙을 준수해야 합니다.

  • PSR-2 코딩 스타일 사양
  • 들여쓰기·        

  • 코드
  • Must Use4 들여쓰기를 위해 "

    Tab 🎜🎜 키" 대신 🎜 공백을 사용하세요. 🎜🎜🎜🎜🎜🎜line🎜🎜🎜🎜🎜🎜🎜한 줄당 문자 수는 🎜80🎜🎜🎜 이내로 적당히 유지해야 하며, 120자를 초과할 수 없지만, 엄격한 제한이 있어서는 안 됩니다. 🎜🎜🎜🎜🎜🎜모든 🎜PHP🎜🎜 파일 🎜🎜은 🎜🎜빈 줄🎜으로 끝나야 합니다. 🎜🎜🎜🎜🎜🎜각 줄에는 반드시🎜안됨🎜🎜둘 이상의 문이 있어야 합니다🎜🎜🎜🎜🎜🎜🎜각 🎜네임스페이스 🎜네임스페이스 선언문과 🎜use 🎜선언문 블록 뒤에는 빈 줄이 🎜ins 있어야 합니다. 에르🎜 . 🎜🎜🎜🎜🎜🎜🎜class🎜의 여는 중괄호(🎜{🎜)는 함수 선언 뒤에 단독 라인🎜으로 작성하고, 닫는 중괄호(🎜}🎜)도 단독 라인🎜으로 작성해야 합니다. 함수 본문 뒤에🎜 . 🎜🎜
  • 메소드의 여는 중괄호({)는 함수 선언 뒤의 한 줄에 작성해야 하며, 닫는 중괄호(})도 해당 한 줄에 작성해야 합니다. 함수 본체 이후에 소유하세요.

  • 제어 구조 의 여는 중괄호({)는 선언과 같은 줄에 작성해야 하고, 닫는 중괄호(})는 본문 뒤에 작성해야 합니다. 자체 라인 .

Modifiers

  • 클래스 속성 및 메서드 must 추가 ( private, protectedpublic ), abstractfinal 은 액세스 수정자 앞에 선언되어야 하고, static 은 액세스 수정자 뒤에 선언되어야 합니다.

spaces

클래스 메서드 매개변수는 각

쉼표
  • 뒤에 있어야 합니다. 공백 1개, 쉼표 앞에는 공백이 없어야 합니다

    제어 구조의 여는 왼쪽 괄호 뒤와 닫는 오른쪽 괄호 앞에 공백이 있어서는 안 됩니다.

  • 키워드
  • ·                                         제어 구조

    반드시
공백 문자가 있어야 하지만 메서드나 함수를 호출할 때

해서는 안 됩니다 예.

모든 PHP 키워드는 모두 소문자여야 하며 상수 true, false 및 null도 모두 소문자여야 합니다.

psr-3 로그 인터페이스 사양 <코드> ​​

loggerinterface <span style="color:#858080;background:#F9FAFA;">LoggerInterface</span> interface는 8 개의 외부 메소드를 정의합니다. : debug, 정보, 공지, 경고, 오류, 위험, 경보 긴급 . 9번째 방법——log

, 첫 번째 매개변수는 기록된 레벨입니다. 이 메소드는 미리 정의된 레벨 상수를 매개변수로 사용하여 호출할 수 있으며, 이는 위 8가지 메소드를 직접 호출하는 것과 동일한 효과를 가져야 합니다. 수신 수준 상수 매개변수가 사전 정의되지 않은 경우

유형 PsrLogInvalidArgumentException 의 예외를 발생시켜야 합니다. 사용자는 불확실한 상황에서 이 메서드를 호출하기 위해 지원되지 않는 수준 상수를 사용해서는 안 됩니다 . /** * 로그 수준 상수 정의*/class LogLevel

{

const

비상

=

'긴급' ;

const

ALERT

='alert' constCRITICAL

=

'위험' ; constERROR

=

'오류';

const경고 ='경고';

const 공지 ='공지';

constINFO ='info'; DEBUG

='debug'; }

PSR-4 자동 로딩 사양

다음 예와 유사합니다.

(

1. A 완전히 호환되는 클래스 이름에는 최상위 네임스페이스(Vendor Name

)

2가 있어야 합니다. 완전히 호환되는 클래스 이름에는 여러 개의 하위 네임스페이스가 있을 수 있습니다

3. 완전히 호환되는 클래스 이름에는 종료 클래스 이름이 있어야 합니다

4.

완전히 호환되는 클래스 이름에서는 밑줄에 특별한 의미가 없습니다

5

문자는 대문자와 소문자의 조합이 될 수 있습니다. 완전히 호환되는 클래스 이름으로

6.

모든 클래스 이름은 대소문자를 구분하여 인용해야 합니다.

7. 종료되는 클래스 이름은

.php로 끝나는 파일에 해당합니다. . 파일 이름은 종료 클래스 이름

일부 일반적인 사용자 정의 사양 제어 계층

1과 일치해야 합니다. sql 문은 모델 계층에 캡슐화되어 있습니다. 메소드 호출로 사용)

2. SQL 문, 논리 코드 3줄 이상, 빈 줄

3. 상황별 함수나 메소드 사이에 빈 줄이 없습니다.

4. (true === $name) 형식

5. 변수를 연결하려면 큰따옴표를 사용하세요.

6. 암시적 변환에 주의하세요.

7. 및 값 범위

/**

*

전역 변수에 대한 일반적인 설명 * 전역 STATUS_CODE

* 0

-SUCCESS * 2-ERROR*/

STATUS_CODE



8과 같이 주석 처리됩니다.

/***************************************************
함수: //
함수 중국어 이름
Description: //
함수 함수, 성능 등에 대한 설명
Calls: // 이 함수가 호출하는 함수 목록
Called By: // 이 함수를 호출하는 함수 목록 function
액세스된 테이블: // 액세스 중인 테이블(이 항목은 데이터베이스 작업과 관련된 프로그램에만 해당)
테이블 업데이트: // 수정 중인 테이블(데이터베이스 작업과 관련된 프로그램에만 해당)
입력:                         // 입력 매개변수 설명 , 각 매개변수의 기능, 값 설명 및 매개변수 간의 관계를 포함합니다.
출력:               // 출력 매개변수에 대한 설명입니다.
반품 :                                                                                                           사용 사용 사용 using using          through out using '' ’' out 의 OUT through using ‐ back's ‐ ‐ ‐ ‐ //
                                                                                        ***************** **/

9. 댓글 사이에 빈 줄

// 코드 원 댓글
프로그램 코드 원

/ / 코드 2개 댓글
프로그램 코드 2개

10. 파일 헤더 댓글

/**************************************************** * ********Copyright (C), 1988-1999, Huawei Tech. Co., Ltd. //
Copyright파일 이름: test.cpp                                                        > > ;시간> <버전 > <설명>
Lizhijian 17/10/11 1.0 초기화
**************************** ******** *************************/








11 .switch문의 Case 점프에는 주석이 필요합니다.

12. 표시된 변수의 이름 지정:

temp 는 tmp로 축약할 수 있습니다. ;
flag 는 flg ;
statistic으로 축약할 수 있습니다. stat ;
으로 축약할 수 있습니다. increment 는 inc로 축약할 수 있습니다. ;
message 는 msg ;

으로 축약할 수 있습니다.

13. 접두어

추가 / 제거 시작 / end 생성 / destroy
삽입
/먼저 / 마지막 구매 / 릴리스
증가
/ 감소 넣기 / get
추가
/삭제 잠금 / 잠금 해제 열기 / closemin
/
max old / new start / stopnext
/
이전 출처 / 타겟 쇼 쇼 ㅋㅋㅋ / down
14. 상태 코드에 상수를 사용해보세요. 숫자 이해하기

은 다음과 같은 형태로 변경되어야 합니다.
#defineTRUNK_IDLE 0
#define TRUNK_BUSY 1

if (Trunk[index ].trunk_state == TRUNK_IDLE)
{
Trunk[index].trunk_state = TRUNK_BUSY;
... //프로그램 코드
}

15. 클래스 파일이름(대문자 카멜 표기법 사용), 일반 파일 이름(밑줄

사용)

16. 구성 변수 사용된 이름 underscores

1. 变量自增自减写到表达式前面: --e >= $name
2. 程序顺序应该遵循:参数定义代码->判断逻辑代码->业务逻辑代码
r
3. 大的数据使用引用
4. 为逻辑代码里每个复杂度高/重复度高的代码添加注释
5. 尽量不为简短代码引入新的变量,减少变量污染

1, 클래스 메소드를 로 정의할 수 있는 경우 static, 그냥 다음과 같이 정의해보세요. static, 속도가 거의 4배 증가합니다.

2, $row['id']의 속도는 $row[id]입니다 7회.

3, echo보다 빠릅니다. print , 그리고 echo의 여러 매개변수를 사용하세요. (번역 참고: echo $str1,$str2와 같이 문자열 연결 대신 마침표 ) 대신 쉼표를 사용하는 것을 의미합니다. .

4, for 루프를 실행하기 전에 최대값을 계산하지 않는 것이 가장 좋습니다. foreach 대신.

5 메모리를 확보하려면 사용하지 않는 변수, 특히 큰 배열을 등록 취소하세요.

6, __get, __set을 사용하지 마세요. __autoload.

7, require_once()은 비용이 많이 듭니다.

8, include 절대 경로를 사용하세요. PHP goinclude_path

에서 파일을 찾는 속도는 운영 체제 경로를 구문 분석하는 데 더 적은 시간이 걸립니다. 9, 스크립트가 언제 실행되기 시작하는지 알고 싶다면(주석: 서버가 클라이언트 요청을 받습니다) $_SERVER['REQUEST_TIME']을 사용하는 것이 time()

보다 더 좋습니다. 10

, 함수는 정규식을 대체하여 동일한 기능을 완성합니다. 11, str_replace기능 비율preg_replace 기능은 빠르고, str의 효율성은 함수는 str_replace

함수의 4배입니다. 12

문자열 대체 함수가 배열이나 문자를 매개변수로 허용할 수 있고 매개변수 길이가 너무 길지 않은 경우 매개변수가 다음과 같이 되도록 추가 대체 코드 작성을 고려할 수 있습니다. 쿼리 및 바꾸기를 위한 매개 변수로 배열을 받아들이는 코드 줄을 작성하는 대신 매번 전달되는 문자는 문자입니다. 13, select Branch 문 사용 (번역: 즉 대소문자 전환) 여러 개를 사용하는 것보다 낫습니다 if, else if

문입니다. 14, @

을 사용하여 오류 메시지를 차단하는 것은 매우 비효율적입니다. 15, apachemod_deflate

을 엽니다. 🎜모듈은 웹페이지 탐색 속도를 향상시킬 수 있습니다. 🎜🎜

16. 데이터베이스 연결은 사용이 끝나면 종료되어야 합니다.

17, 오류 메시지는 비용이 많이 듭니다. ㅋㅋㅋ 봄 축제 고대

PHP 사양 PSR-1 PHP 언어 PHP 수동 PHP 개발자

위 내용은 PHP 사양의 PSR 사양의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.