작업 효율성 향상, 개발의 효율성과 합리성 확보, 프로그램 코드의 가독성 및 재사용성 극대화, 통신 효율성 향상을 위해서는 코드 작성 사양이 필요합니다. 모두가 좋은 코딩 습관을 기르고 코드의 버그를 줄일 수 있도록 하세요.
CleverCode는 일부 사양을 정리했습니다. 이 사양에는 명명 규칙, 코드 들여쓰기 규칙, 제어 구조, 함수 호출, 함수 정의, 주석, 포함된 코드, PHP 태그 및 PHP 개발 중 프로그램 코딩의 일반적인 명명 규칙이 포함됩니다.
2) 실제로 이 문제는 압축 또는 캐시된 출력이 활성화되지 않은 경우에만 발생합니다. 예:
php.ini - 압축된 출력 및 캐시된 출력 금지<?php //推荐 echo 'hello world'; ?> <? //短标签格式不推荐 echo ' hello world '; ?>
foo.php, 다음 위치에 공백이나 줄바꿈이 있다는 점에 유의하세요. 이번에는 뒤쳐졌습니다. 물론 페이지에서는 볼 수 없습니다.
zlib.output_conpression = off output_buffering = off
index.php는 foo.php를 포함하는 동안 실제로 일부 공백이나 줄바꿈을 출력합니다.
<?php $foo= 'foo'; ?>
이제 다음 경고가 표시됩니다. "...Cannotsendsessioncachelimiter-headersalreadysent..."
1.2 파일 및 디렉터리 이름 지정
프로그램 파일 이름과 디렉터리 이름 모두 의미 있는 영어로 이름을 지정해야 합니다. 또는 의미없는 문자, 문자, 숫자, 밑줄, 밑줄 문자만 허용되며 ".php"로 끝나야 합니다(템플릿 파일 제외).
//클래스는
2 이름 지정 사양
2.1 변수 이름 지정
PHP의 변수는 달러 기호와 변수 이름으로 표시됩니다. 변수 이름은 대소문자를 구분합니다. 유효한 모프 이름은 문자나 밑줄로 시작하고 그 뒤에 임의 개수의 문자, 숫자 또는 밑줄이 옵니다. 일반적인
정규 표현식
은 [a-zA-Z_x7f-xff][a-zA-ZO-9_'x7f-xff]로 표현되며, 중국어와 같은 ASCII가 아닌 문자를 변수에 사용하면 안 됩니다.
2.1.1 전체 프로그램
전체 프로그램의 이름은 소문자로 시작하는 카멜 케이스로 지정되며 이름은 다음과 같이 의미가 있어야 합니다.
<?php include 'foo.php'; session_start(); ?>
2.1.2 PHP 전역 변수 키 값PHP 전역 변수 키 값은 양면이 있습니다. 중간에 Camel Case 명명을 사용합니다.
2.1.3 일반 변수
일반 변수는 전체적으로 카멜 표기법을 사용하고,
관례에 따라 이름을 지정하며, 일반적인 키워드나 의미가 모호한 단어는 사용하지 않습니다. 변수는 명사 기반이어야 합니다.String: $myName
Array: $myArray권장되지 않음:$yes: 변수가 변경될 가능성이 높아 Syeszflase가 발생하고 코드 논리가 혼란스러울 수 있으므로 bool 변수로 사용하면 안 됩니다.
$sex: 의미가 모호하고 진실성이 없는 영어 단어. 성별 이름은 $gender 여야 합니다.
2.1.4 함수 이름
함수 이름은 무엇을 하려는지 한눈에 알 수 있도록 의미가 있어야 하며, 가능한 한 축약형으로 작성해야 합니다. showMsg와 같이 동사나 동사+형용사
의 명명 방법을 사용하는 것이 좋습니다. 다음 함수 이름은 권장되지 않습니다.
function displayName($name){ echo $name; }
위 함수 이름은 다음과 같이 정제될 수 있습니다.
getPublishedAdvertisementBy CategoryAndCategoryldAndPosition()예 1) 클래스 공개 함수:
getAd($category,$categoryid,$position,$published)
예 2) "_"로 시작하는 클래스 비공개 함수:
public function doGetUserName($job)
예 3) "_"로 시작하는 클래스 보호 함수:
private function _doGetUserName($job)2.1.5 클래스의 속성
클래스의 변수는 일반 변수의 명명 규칙을 따릅니다.
protected function _doGetUserName($job)
예 2) "_"로 시작하는 개인 속성:
public $userName = ’CleverCode’; static $userType = array(1,2,3);예 3) "_"로 시작하는 보호 속성:
private $_userName = ’CleverCode’;
For 예 4) 상수, 모두 대문자, "_"로 구분:
protected $_userName = ’CleverCode’;
2.2 데이터베이스 이름 지정
2.2.1 라이브러리 이름 지정
2) "_"로 구분된 여러 단어로 구성됩니다.
예:
const TYPE_GZ = 4;
2.2.2 테이블 이름 지정
1) 테이블 이름은 모두 소문자를 사용합니다.
2) 테이블 이름에는 통합 접두사를 사용하고 접두사는 비워 둘 수 없습니다(모듈식이며 MYSQL 예약어를 효과적으로 피할 수 있음).3) 여러 단어로 구성된 테이블 이름은 "_" 구분을 사용하세요.
예:
db_user,db_system。
2.2.3 테이블 필드 이름 지정
1)全部使用小写字母命名。
2)多个单词不用下画线进行分割(重要)。
3)如果有必要,给常用字段加上表名首字母作为前缀。
4)避免使用关键字和保留字,但约定俗成的除外。
例如:
username,newsid,userid,logid
3 注释规范
3.1 文件注释
文件注释通常放在整个PHP文件头部,其内容包括文件版权、作者、编写日期、版本号等
重要信息。PHP中,可以参照phpdocument规范,便于利用程序自动生成文档。
文件注释遵循以下规则:
1)必须包含本程序的描述;
2)必须包含作者;
3)必须包含版权;
4)必须包含文件的名称;
5)可以包含书写日期;
6)可以包含版本信息;
7)可以包含重要的使用说明,如类的调用方法、注意事项等。
例如:
<?php /** * SystemUser.php * * 系统用户操作操作 * * Copyright (c) 2015 http://blog.csdn.net/CleverCode * * modification history: * -------------------- * 2015/5/11, by Clever Code, Create *
3.2 类与接口注释
类和接口的注释应该尽量简洁。按照一般的习惯,一个文件只包含一个类,在类注释中通常不需要再加上作者和版本等信息,加上可见性和简中的描述即可。如果文件注释已经足够详细,可以不用给类写注释。如果同时存在接口和接口的实现类,通常做法是仅在接口中进行注释。
3.3 方法和函数注释
方法和函数的注释写在前面,通常需要标明的信息主要是可见性、参数类型和返回值的类
例如1:
/** * 对比新旧数据 * * @param bigint $userid 人编号 * @param array $oldMap 旧数据 * @param array $newMap 新数据(输出参数) * @return string 成功返回'OK',失败返回错误信息 */ public static function diffRecommendInfo($userid, $oldMap, &$newMap){ }
例如2:
/** * 插入日志数据 * * @param bigint $data[‘userid’] 用户编号 * @param array $data[‘logintime’] 登录时间 * @return string 成功返回'OK',失败返回错误信息 */ public static function insertLogData($data){ }
3.4 Action注释
由于我们都是使用的zend开发模式,在Action是http请求处理逻辑的入口,那么必然会传递get,post等参数。可以注释如下.
例如1)没有get,post传递参数时候:
/** * 自动设置名称 * * @return void */ public function autosetAction(){ }
例如2 )有get传递参数时候:
/** * 获取用户名称 * * @get int $userid 用户编号 * @get int $currpage 当前页 * @get int $pagesize * * @return void */ public function getusernameAction(){ }
例如3) 有post传递参数时候:
/** * 删除用户 * * @post int $userid 用户编号 * @return void */ public function deleteuserAction(){ }
3.5 单行注释
1)写在被注释代码前面,而不是后面。但对于单行语句,按照习惯可以把注释放在语句末尾,也可以写在行上面。
2)对于大段注释,使用/**/格式,通常在文件和函数注释中使用,而代码内部统一使用//注释,因为其写起来简单。
例如:
//姓名
$name = ’CleverCode’;
4 代码风格
4.1 缩进与空格
在书写代码的时候,必须注意代码的缩进规则:
1)使用4个空格作为缩进,而不使用tab缩进(如在UltraEdit中可以进行预先设置)。
2)变量赋值时,等号左右留出空格。
例如:
$name = 'CleverCode';//推荐
$name='CleverCode';//不推荐
为了最大程度减轻工作量,保持代码美观,建议使用大型IDE管理代码。比如,在zend studio中,使用Ctrl+Shift+F组合键对代码进行格式化。
4.2 语句断行
代码书写中应遵循以下原则:
1)尽量保证程序语句一行就是一句;
2)尽量不要使一行的代码太长,一般控制在80个字符以内;
如果一行代码太长,请使用类似.=的方式断行书写;
执行数据库的SQL语句操作时,尽量不要在函数内写SQL语句,而先用变量定义SQL
语句,然后在执行操作的函数中调用定义的变量。
例如:
//代码分割 $sql= "SELECTusername,password,address,age,postcode from test_t"; $sql.= "WHEREusername=${user}"; $ret = mysql_query($sql);
3)一个函数控制在200行以内;
4)if最多嵌套3层;
//不推荐
If(){ If(){ If(){ If(){ …… } } } }
5)循环最多3层。
//不推荐 For(){ For(){ For(){ For(){ …… } } } }
6)if或者for语句块中只有一行时候,加上{}。当有语句变动的时候会带来不必要的bug。
//推荐 If($a == 1){ echo 1; } //不推荐 If($a == 1) echo 1;
4.3 空行
1)函数与函数之间空行。
2)同一个函数不同逻辑块之间空行,查阅不同的逻辑块条理更清晰。
4.4 函数结构
通常一个函数分为三部分。第一部分:检查参数;第二部分:处理逻辑;第三部分:返回结果。
例如:
/** * 删除日志通过uid * * @param string $uid 用户uid * @return string 成功返回'OK',失败返回错误信息 */ public static function deleteLogByUid($uid){ //第一步:检查参数。防止处理部分异常;比如$uid是传入array(); if (!is_numeric($uid)) { return '!is_numeric($uid)'; } //第二步:处理逻辑。 $affected = $userLogTable->delete('where userid = ' . $uid); //第三步:返回结果。让调用者知道是否处理正常。 if($affected){ return 'OK'; } return 'delete error!'; }
4.5 函数返回函数
需要客户端的函数:
返回值
$ret = array(‘code’=> 1 ,msg=>’’,data => array());
4.6 更好的习惯
在代码中,使用下面列举的写法,可以使代码更优雅。
1)多使用PHP中已经存在的常量,而不要自己定义,例如:
echo$meg."\r\n"; echo$msg,PHPJEOL;
PHP中,PHP_EOL是一个预定义常量,表示一行结束,随着所使用系统的不同,使用PHP_EOL会让代码更具有可移植性。
2)更详尽的注释。
注释是一门艺术,好的注释可以比代码更精彩。不用担心效率问题。一则注释对代码的效
率影响不大,其次在正式产品中可以对代码中的注释进行批量删除。注释做到极致和完美的典型代表是Apache组织各种产品的源代码。
3)不要滥用语法糖。
语法糖也就是语言中的潜规则,即不具有普遍代表性的语法。少量使用语法糖会尝到甜
头,大量使用则是一种灾难。
例如以下代码,可读性比较差;
$a?$a-$b:3&&$c&&$d=1;
위 내용은 코딩 표준에 관한 PHP 문서(컬렉션)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

phpidifiesauser의 sssessionusessessioncookiesandssessionids.1) whensession_start () iscalled, phpgeneratesauniquessessionStoredInacookienamedPhpsSessIdonSeuser 'sbrowser.2) thisidallowsphptoretrievessessionDataTromServer.

PHP 세션의 보안은 다음 측정을 통해 달성 할 수 있습니다. 1. Session_REGENEREAT_ID ()를 사용하여 사용자가 로그인하거나 중요한 작업 일 때 세션 ID를 재생합니다. 2. HTTPS 프로토콜을 통해 전송 세션 ID를 암호화합니다. 3. 세션 _save_path ()를 사용하여 세션 데이터를 저장하고 권한을 올바르게 설정할 보안 디렉토리를 지정하십시오.

phpsessionfilesarestoredInTheRectorySpecifiedBysession.save_path, 일반적으로/tmponunix-likesystemsorc : \ windows \ temponwindows.tocustomizethis : 1) austession_save_path () toSetacustomDirectory, verlyTeCustory-swritation;

toretrievedatafromAphPsession, startSessionstart_start () andaccessvariblesinthe $ _sessionArray.forexample : 1) startthessession : session_start (). 2) retrievedata : $ _ session [ 'username']; echo "Welcome,". $ username;

세션을 사용하여 효율적인 쇼핑 카트 시스템을 구축하는 단계에는 다음이 포함됩니다. 1) 세션의 정의와 기능을 이해합니다. 세션은 요청에 따라 사용자 상태를 유지하는 데 사용되는 서버 측 스토리지 메커니즘입니다. 2) 쇼핑 카트에 제품 추가와 같은 기본 세션 관리를 구현합니다. 3) 제품 수량 관리 및 삭제 지원 고급 사용으로 확장; 4) 세션 데이터를 지속하고 보안 세션 식별자를 사용하여 성능 및 보안을 최적화합니다.

이 기사는 PHP의 인터페이스를 생성, 구현 및 사용하는 방법을 설명하여 코드 구성 및 유지 관리에 대한 이점에 중점을 둡니다.

이 기사에서는 PHP의 암호 해싱에 대한 Crypt ()와 Password_hash ()의 차이점에 대해 논의하여 최신 웹 애플리케이션에 대한 구현, 보안 및 적합성에 중점을 둡니다.

기사는 입력 유효성 검사, 출력 인코딩 및 OWASP ESAPI 및 HTML 청정기와 같은 도구를 통해 PHP의 크로스 사이트 스크립팅 (XSS) 방지에 대해 논의합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

드림위버 CS6
시각적 웹 개발 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구
