[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'"

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Jika anda seorang pembangun PHP yang berpengalaman, anda mungkin merasakan bahawa anda telah berada di sana dan telah melakukannya. Anda telah membangunkan sejumlah besar aplikasi, menyahpenyahpepijat berjuta-juta baris kod dan mengubah suai sekumpulan skrip untuk mencapai op

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

Rentetan adalah urutan aksara, termasuk huruf, nombor, dan simbol. Tutorial ini akan mempelajari cara mengira bilangan vokal dalam rentetan yang diberikan dalam PHP menggunakan kaedah yang berbeza. Vokal dalam bahasa Inggeris adalah a, e, i, o, u, dan mereka boleh menjadi huruf besar atau huruf kecil. Apa itu vokal? Vokal adalah watak abjad yang mewakili sebutan tertentu. Terdapat lima vokal dalam bahasa Inggeris, termasuk huruf besar dan huruf kecil: a, e, i, o, u Contoh 1 Input: String = "TutorialSpoint" Output: 6 menjelaskan Vokal dalam rentetan "TutorialSpoint" adalah u, o, i, a, o, i. Terdapat 6 yuan sebanyak 6

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Apakah kaedah sihir PHP? Kaedah sihir PHP termasuk: 1. \ _ \ _ Membina, digunakan untuk memulakan objek; 2. \ _ \ _ Destruct, digunakan untuk membersihkan sumber; 3. \ _ \ _ Call, mengendalikan panggilan kaedah yang tidak wujud; 4. \ _ \ _ Mendapatkan, melaksanakan akses atribut dinamik; 5. \ _ \ _ Set, melaksanakan tetapan atribut dinamik. Kaedah ini secara automatik dipanggil dalam situasi tertentu, meningkatkan fleksibiliti dan kecekapan kod.
