[PHP]CodeIgniter学习手册(四):简单的PHP开发规范
文件式 文件应该使用 Unicode (UTF-8) 编码保存。同时不要使用 字节序标记(BOM) 。与 UTF-16 和 UTF-32 不同,UTF-8 编码的文件不需要指明字节序,而且 字节序标记(BOM) 在PHP中会产生预期之外的输出,阻止了应用程序设置它自己的头信息。应该使用Unix 式的
文件格式
文件应该使用 Unicode (UTF-8) 编码保存。同时不要使用 字节序标记(BOM) 。与 UTF-16 和 UTF-32 不同,UTF-8 编码的文件不需要指明字节序,而且 字节序标记(BOM) 在PHP中会产生预期之外的输出,阻止了应用程序设置它自己的头信息。应该使用Unix 格式的行结束符(LF)。
不当的:
echo "Here's my code!";
?>
适当的:
echo "Here's my code!";
/* End of file myfile.php */
/* Location: ./system/modules/mymodule/myfile.php */
类名的首字母应该大写。如果名称由多个词组成,词之间要用下划线分隔,不要使用骆驼命名法。类中所有其他方法的名称应该完全小写并且名称能明确指明这个函数的用途,最好用动词开头。尽量避免过长和冗余的名称
不当的:
class superclass
class SuperClass
适当的:
class Super_class
不当的和适当的方法名称的示例:
不当的:
function fileproperties() // 方法名没有清晰的描述以及下划线分割单词
function fileProperties() // 方法名没有清晰的描述以及使用了驼峰法命名
function getfileproperties() // 还可以!但是忘记了下划线分割单词
function getFileProperties() // 使用了驼峰法命名
function get_the_file_properties_from_the_file() // 方法名太冗长
适当的:
function get_file_properties() // 清晰的方法名描述,下划线分割单词,全部使用小写字母
变量的命名规则与方法的命名规则十分相似。就是说,变量名应该只包含小写字母,用下划线分隔,并且能适当地指明变量的用途和内容。那些短的、无意义的变量名应该只作为迭代器用在for()循环里。
不当的:
$j = 'foo'; // 单字符变量应该只作为for()的循环变量使用
$Str // 使用了大写字母
$bufferedText // 使用了驼峰命名,而且变量名应该更短,并有清晰的语法含义
$groupid // 多个词组,应该使用下划线分割
$name_of_last_city_used // 太长了
适当的:
for ($j = 0; $j
$str $buffer $group_id $last_city
通常,代码应该被详细地注释。这不仅仅有助于给缺乏经验的程序员描述代码的流程和意图,而且有助于给你提供丰富的内容以让你在几个月后再看自己的代码时仍能很好的理解。 注释没有强制规定的格式,但是我们建议以下的形式。
文档块(DocBlock) 式的注释要写在类和方法的声明前,这样它们就能被集成开发环境(IDE)捕获:
/**
* Super Class
* @package Package Name
* @subpackage Subpackage
* @category Category
* @author Author Name
* @link http://example.com
*/
使用行注释时,在大的注释块和代码间留一个空行。
常量命名除了要全部用大写外,其他的规则都和变量相同。在适当的时候,始终使用CodeIgniter常量,例如LASH, LD, RD, PATH_CACHE等等.
不当的:
myConstant // 未使用下划线分割单词,未全部使用大写字母
N // 不能使用单个字母作为常量
S_C_VER // 常量名没有清晰的含义
$str = str_replace('{foo}', 'bar', $str); // should use LD and RD constants
恰当的:
MY_CONSTANT
NEWLINE SUPER_CLASS_VERSION
$str = str_replace(LD.'foo'.RD, 'bar', $str);
TRUE, FALSE, 和 NULL 关键字应该总是完全大写的。
不当的:
if ($foo == true) $bar = false;
function foo($bar = null)
恰当的:
if ($foo == TRUE)
$bar = FALSE;
function foo($bar = NULL)
|| 有时让人底气不足,不容易辨识,因为在某些输出设备上它不够清晰(可能看起来像数字11). && 要优先于 AND ,不过两者都可以被接受, 使用 ! 时要在其前后都加一个空格。
不当的:
if ($foo || $bar)
if ($foo AND $bar) // 可以,但有时不被常用的语法程序高亮标识)
if (!$foo)
if (! is_array($foo))
恰当的:
if ($foo OR $bar)
if ($foo && $bar) // 推荐 if ( ! $foo) if ( ! is_array($foo))
部分PHP函数执行失败时返回 FALSE, 但也可能有一个有效的返回值 "" 或 0, 它在松散比较中会被计算为FALSE. 在条件语句中使用这些返回值的时候,为了确保返回值是你所预期的类型而不是一个有着松散类型的值,请进行显式的比较。
在返回和检查你自己的变量时也要遵循这种严格的方法,必要时使用=== 和 !==。
不当的:
// 如果 'foo' 位于此字符串的起始处,strpos将返回 0,
// 此处条件判断的结果为TRUE
if (strpos($str, 'foo') == FALSE)
恰当的:
if (strpos($str, 'foo') === FALSE)
不当的:
function build_string($str = "") {
if ($str == "") // uh-oh! 如果传递的参数是FALSE或者整数0那会怎么样? { }
}
恰当的:
function build_string($str = "") {
if ($str === "") { }
}
在PHP开始标记之前和结束标记之后都不能有空格。输出已经被缓存,所以文件中的空格会导致CodeIgniter在输出自己的内容之前就开始了输出,这会使CodeIgniter出错且无法输出正确的header。在下面的例子中,使用鼠标选中这些文本,你就能看到那些不应该有的空格。
不当的:
,并且在PHP结束标记后面也有空格 ?>
恰当的:
除非你的附加组件的文档中有特别说明,否则所有代码必须与PHP 5.1以上版本兼容。此外,不要使用那些依赖于非默认安装的库的函数,除非你的代码中包含了该函数不可用时的替代方法,或者你在文档中明确说明了你的附加组件需要某些库。
当你的类或文件名是一个常见词语时,或者是很可能与另一个PHP脚本同名时,使用一个唯一的前缀来避免冲突。你必须始终明白这一点:你的最终用户可能会运行其它第三方的附加组件或者PHP脚本。选择一个能够唯一标识开发者或公司的前缀。
不当的:
class Email pi.email.php
class Xml ext.xml.php
class Import mod.import.php
恰当的:
class Pre_email pi.pre_email.php
class Pre_xml ext.pre_xml.php
class Pre_import mod.pre_import.php
你的附加组件所用到的任何表都必须使用 'exp_' 这个前缀,然后是一个能够唯一标识开发者或公司的前缀,最后才是一个简短的描述性的表名。你不需要担心用户安装时所使用的数据库前缀,因为CodeIgniter的数据库类将根据实际情况自动地对 'exp_' 进行转换。
不当的:
email_addresses // 缺少这两个前缀
pre_email_addresses // 缺少 exp_ 前缀
exp_email_addresses // 缺少唯一前缀
恰当的:
exp_pre_email_addresses
说明: 请注意MySQL对表名的限制是不能多于64个字符。会超出这个限制的那些表名都是不合理的,因此这应该不是问题。例如,下面的这个些表名比最大限制多出一个字符。这很傻,不是吗? exp_pre_email_addresses_of_registered_users_in_seattle_washington
对于你的附加组件所使用的类应当遵循一个文件一个类的原则,除非这些类是紧密相关的。CodeIgniter的文件中包含多个类的一个例子是数据库类文件,其中包含了DB类和DB_Cache类,还有Magpie插件,其中包含了Magpie和Snoopy类。
在代码中使用tab代替空格。这虽然看起来像是小事,但是使用tab代替空格有利于那些阅读你的代码的开发者在他们各自所使用的应用程序中自定义缩进方式。此外还有一个好处是,使用这种方式保存的文件稍微紧凑一点。
文件必须使用Unix换行符保存。这对于那些在Windows下的开发者来说更为重要,但无论如何,确保你的文本编辑器已经设置为使用Unix换行符来保存文件。
使用 Allman 风格缩进。除了类声明以外,括号总是独占一行,且缩进与“属于”它的控制语句同级。
不恰当的:
function foo($bar) {
// ...
}
foreach ($arr as $key => $val) {
// ...
}
if ($foo == $bar) {
// ...
} else {
// ...
}
恰当的:
function foo($bar)
{
// ...
}
foreach ($arr as $key => $val)
{
// ...
}
if ($foo == $bar) {
// ...
}
else
{ // ...
}
通常情况下,不要在方括号"[]"和圆括号"()"内增加任何空格符。唯一的例外就是为了提高可读性和区别开它们与函数,在接受参数的PHP语法控制结构所使用的括号里,需要增加空格符(declare, do-while, elseif, for, foreach, if, switch, while)。
不恰当的:
$arr[ $foo ] = 'foo';
正确的:
$arr[$foo] = 'foo'; // 数组键值的方括号内没有空格
不恰当的:
function foo ( $bar ) { }
正确的:
function foo($bar) // 函数声明的圆括号内没有空格 { }
不恰当的:
foreach( $query->result() as $row ) // PHP语法控制结构之后有空格,但不是在圆括号内
正确的: foreach ($query->result() as $row)
所有在控制面板输出的文本都应该使用 lang 文件里的语言变量来允许本地化。
不正确:
return "Invalid Selection";
正确的:
return $this->lang->line('invalid_selection');
代码里像一些只是为了被类里其他公开函数所调用而封装的工具/辅助类方法,应该以一个下划线做前缀来命名。
convert_text() // 公开方法
_convert_text() // 私有方法
短标记
一直使用 PHP 完整标记,以免服务器不支持短标记,也就是未打开 short_open_tag 。(这条已经不成立,因为新版本的 CI 已经解决了服务器不支持短标记的问题,不过还是建议使用完整标记)
不正确的:
echo $foo; ?>
=$foo?>
正确的:
切记不要在一行写多条语句
不正确:
$foo = 'this'; $bar = 'that'; $bat = str_replace($foo, $bar, $bag);
正确:
$foo = 'this';
$bar = 'that';
$bat = str_replace($foo, $bar, $bag);
一直使用单引号除非你需要解析变量,如果需要解析变量请使用大括号。
如果字符串包含单引号的话你可以使用双引号,这样就不用转义了。
不正确:
"My String" // 没有解析变量,不需要使用双引号
"My string $foo" // 解析变量需要使用括号
'SELECT foo FROM bar WHERE baz = \'bag\'' // 需要转义单引号''时这样写比较难看,可以使用双引号
正确:
'My String'
"My string {$foo}"
"SELECT foo FROM bar WHERE baz = 'bag'"

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
