คู่มือการใช้งาน CodeIgniter เวอร์ชั่น 1.7.2


รูปแบบทั่วไปและไวยากรณ์

หน้านี้อธิบายกฎของการเขียนโค้ดซึ่งใช้กับการพัฒนาด้วย CodeIgniter

เนื้อหาต่างๆ

การปิดแท็ก PHP

แท็กปิด PHP ในเอกสาร PHP (?>) ซึ่งเป็นทางเลือกหนึ่งของ PHP parser อย่างไรก็ตามถ้าใช้มัน whitespace ที่ตามหลังมันอาจจะทำให้เกิดผลลัพธ์ที่ไม่ถูกต้องหรือ PHP errors ได้หรือถูกระงับในภายหลัง ด้วยเหตุผลเหล่านี้ไฟล์ PHP ทุกไฟล์ควรละเลยการปิดแท็ก PHP และใช้การแทรกคำอธิบาย (comment) ลงไปในตำแหน่งจุดสิ้นสุดของไฟล์และบอกที่อยู่ของมันโดยขึ้นอยู่ภายใต้ application root. สิ่งนี้จะทำให้คุณค้นพบไฟล์ได้สะดวกไม่ถูกตัดโดย PHP parser

วิธีที่ไม่ถูกต้อง: <?php echo "Here's my code!"; ?>
วิธีที่ถูกต้อง
: <?php echo "Here's my code!"; /* End of file myfile.php */ /* Location: ./system/modules/mymodule/myfile.php */

การตั้งชื่อคลาสและเมธอด

ชื่อคลาสควรจะตั้งตัวอักษรแรกเป็นตัวพิมพ์ใหญ่ และเมธอดตัวสร้าง (constructor) จะต้องตรงกัน ถ้ามีหลายคำควรแ่บ่งแยกคำด้วย underscore(_), และไม่ใช่แบบตัวอักษรแรกของคำเป็นตัวพิมพ์ใหญ่ เช่น CamelCased. โดยเมธอดส่วนที่เหลือภายในคลาสจะต้องเป็นตัวเล็กและถูกตั้งชื่ออย่างชัดเจนเพื่อแดสงการทำงาน โดยเฉพาะอย่างยิ่งมีการใส่คำกริยา(verb)ลงไป พยายามหลีกเลี่ยงคำจำนวนมากและชื่อที่ใช้คำมากเกินไป

วิธีที่ไม่ถูกต้อง: class superclass class SuperClass
วิธีที่ถูกต้อง
: class Super_class

สังเกตุว่าคลาสและเมธอดตัวสร้าง(constructor method) จะต้องเหมือนกันทั้งชื่อและตัวพิมพ์

class Super_class { function Super_class() { } }

ตัวอย่างการตั้งชื่อเมธอด

วิธีที่ไม่ถูกต้อง: function fileproperties() // ไม่ได้ถูกบรรยายและต้องการ underscore(_) เพื่อแยกคำ function fileProperties() // ไม่ได้ถูกบรรยายและใช้แบบ CamelCase (ตัวอักษรแรกของคำเป็นตัวพิมพ์ใหญ่) function getfileproperties() // ดีขึ้นแต่ยังขาด underscore(_) เพื่อแยกคำ function getFileProperties() // ใช้ CamelCase function get_the_file_properties_from_the_file() // ใช้คำเยอะเกินไป
วิธีที่ถูกต้อง
: function get_file_properties() // บรรยายดี, ใช้ underscore(_) เพื่อแยกคำ, และเป็นตัวอักษรพิมพ์เล็กทั้งหมด

ชื่อตัวแปร

นโยบายการตั้งชื่อมีลักษณะใลก้เคียงกับการตั้งเมธอดของคลาส โดยชื่อจะต้องมีเฉพาะอักษรพิมพ์เล็กใช้ underscore(_) ในการแยกคำและตั้งชื่ออย่างมีเหตุผลเพื่อแสดงจุดประสงค์และเนื้อหา โดยใช้คำสั้นๆ และใช้คำยกเว้นตัวแปรที่ต้องใช้ใน for() loops

วิธีที่ไม่ถูกต้อง: $j = 'foo'; // ตัวแปรมีอักษรเดียวถ้าจะใช้ก็ใช้ใน for() loops เท่านั้น $Str // มีตัวอักษรแบบพิมพ์ใหญ่ $bufferedText // ใช้ CamelCase และควรจะทำให้สั้นกว่านี้โดยไม่เสียความหมายเดิม $groupid // หลายคำ แต่ไม่มี underscore(_) $name_of_last_city_used // ยาวเกินไป วิธีที่ถูกต้อง: for ($j = 0; $j < 10; $j++) $str $buffer $group_id $last_city

การใส่ข้อคิดเห็นหรือคำอธิบาย

โดยปกติ , โค้ดควรที่จะถูกเขียนคำอธิบายอย่างสมบูรณ์ มันไม่ช่วยแค่อธิบายการทำงานหรือเจตนาของโค้ดสำหรับโปรแกรมเมอร์ที่มีประสบการณ์น้อยเท่านั้น แต่มันสามารถตรวจสอบสิ่งที่ประเมิณไม่ได้เมื่อคุณกลับมาดูโค้ดของตัวเองหลังจากผ่านไปหลายเดือน ไม่มีรูปแบบตายตัวสำหรับการใส่ข้อคิดเห็นหรือคำอธิบายแต่ทำตามแบบถัดไปนี้เป็นข้อแนะนำ

รูปแบบการใส่ข้อคิดเห็นหรือคำอธิบายแบบ DocBlock ที่มาก่อนการประกาศคลาสและเมธอดเป็นที่ถูกเลือกใช้งานใน IDE หลายตัว:

/** * Super Class * * @package ชื่อแพคเกจ * @subpackage แพคเกจย่อย * @category หมวดหมู่ * @author ชื่อผู้จัดทำ * @link http://example.com */ class Super_class { /** * เข้ารหัสสตริงเพื่อใช้ใน XML * * @access public * @param string * @return string */ function xml_encode($str)

ใช้การใส่ความคิดเห็นหรือคำอธิบายเพียงบรรทัดในส่วนของโค้ด และให้ปล่อยบรรทัดว่างไว้ระหว่างข้อคิดเห็นจำนวนมากและโค้ด

// แยกสตริงด้วยบรรทัดใหม่ $parts = explode("\n", $str); // เป็นข้อคิดเห็นที่ยาวซึ่งต้องบอกข้อมูลให้ชัดเจนมากขึ้นว่าเกิดอะไรขึ้น // และทำไมถึงใช้หลายการแสดงข้อคิดเห็นแบบบรรทัดเดียว(single-line comments) // โดยพยายามจำกัดความกว้างอย่างมีเหตุมีผล โดยใช้ตัวอักษรประมาณ 70 ตัวอักษร // เพื่อให้อ่านง่ายที่สุด และอย่าลังเลที่จะลิงค์แหล่งข้อมูลภายนอก ถ้ามันรายละเอียดที่ดีกว่า // // http://example.com/information_about_something/in_particular/ $parts = $this->foo($parts);

ค่าคงที่

ค่าคงที่ให้ทำตามแบบเดียวกับข้อแนะนำให้การสร้างตัวแปร ยกเว้นเรื่องหนึ่งคือค่าคงที่จะต้องเป็นตัวใหญ่พิมพ์ใหญ่ทั้งหมดเสมอ. ใช้ค่าคงที่มีในเตรียมไว้ใน ExpressionEngine อย่างสม่ำเสมอ เช่น SLASH, LD, RD, PATH_CACHE, etc.

วิธีที่ไม่ถูกต้อง: myConstant // ขาด underscore(_) เพื่อแยกคำและไม่ใช่ตัวพิมพ์ใหญ่ทั้งหมด N // ห้ามใช้ตัวอักษรเดียวกับค่าคงที่ S_C_VER // ไม่สามารถอธิบายได้ $str = str_replace('{foo}', 'bar', $str); // ควรใช้ค่าคงที่ LD และ RD CORRECT: MY_CONSTANT NEWLINE SUPER_CLASS_VERSION $str = str_replace(LD.'foo'.RD, 'bar', $str);

TRUE, FALSE, และ NULL

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 === "") { } }

ดูข้อมูลเพิ่มเติ่มเกี่ยวกับ typecasting , ซึ่งมีประโยชน์พอสมควร. Typecasting has a slightly different effect which may be desirable. When เปลี่ยนค่าตัวแปรเป็นสตริง , ตัวอย่างเช่น NULL และบูลีน FALSE จะกลายเป็นสตริงทีแบบว่าง , 0 (และตัวเลขอื่นๆ) กลายเป็นสตริงที่เป็นตัวเลข, และบูลีน TRUE กลายเป็น "1":

$str = (string) $str; // เปลี่ยน $str เป็นสตริง

ตรวจสอบโค้ด

ไม่มีใช้โค้ดตรวจสอบหลงเหลือได้ก่อนจะที่ถูกยินยอมนำไปใช้ ยกเว้นว่ามันจะถูกคอมเม้นต์ออก เช่น ไม่มี var_dump(), print_r(), die(), and exit() ถูกเหลือในขณะที่สร้าง ยกเว้นมันถูกคอมเม้นต์ออก

// print_r($foo);

ช่องว่างในไฟล์

ไม่มีช่องว่างอยู่ข้างหน้าตัวแท็กเปิด PHP หรือตามหลังแท็กปิด PHP. ผลลัพธ์ของ ExpressionEngine นั้นถูกเก็บไว้, ดังนั้นช่องว่างในไฟล์ของคุณสามาถทำให้เกิดผลลัพธ์ก่อนที่ ExpressionEngine จะส่งผลลัพธ์ของมัน , ซึ่งนำไปสู่การเปิดข้อผิดพลาดและไม่สามารถทำงานได้สำหรับ ExpressionEngine ในการส่ง header ที่้เหมาะสม. ในตัวอย่างด้านล่างนี้ ให้เลือกข้อความด้วยเมาส์ของคุณเพื่อเห็นผลลัพธ์ที่เป็นช่องว่าง

วิธีที่ไม่ถูกต้อง:

<?php // ...มันมีช่องว่างและการขึ้นบรรทัดใหม่เหนือคำแท็กเปิด PHP // และยังมีช่องว่างหลังปิดแท็ก PHP ?>

วิธีที่ถูกต้อง:

<?php // นี้คือตัวอย่างที่ไม่มีช่องว่างก่อนหรือหลังการเปิดปิดแท็ก PHP ?>

ความเข้ากันได้

นอกจากลักษณะเฉพาะที่กล่าวถึงในเอกสารที่เพิ่มมาของคุณ , โค้ดทั้งหมดจะต้องรองรับ PHP เวอร์ชั่น 4.3 ขึ้นไป. เพิ่มเติมอย่าใช้ฟังก์ชัน PHP ซึ่งต้องการไลบรารี่ที่ไม่ใช่ไลบรารี่ปกติ ในการติดตั้งนอกจากโค้ดของคุณมีทางเลือกของเมทอด สำหรับฟังก์ชันที่ใช้ไม่สามารถใช้ได้ หรือบอกในเอกสารของคุณว่าต้องการไลบรารี่ PHP ตัวใด

ตั้งชื่อคลาสและไฟล์ด้วยคำทั่วไป

เมื่อไรที่ชื่อคลาสหรือไฟล์ของคุณใช้คำทั่วไปหรืออาจจะเหมือนกับชื่อ PHP Script ตัวอื่นแนะนำให้คุณใส่คำนำหน้าเพื่อป้องกันชื่อชนกัน ให้นึกเสมอว่าผู้ใช้อาจจะใช้ตัวเสริมหรือ PHP Script จากที่อื่น ดังนั้นให้คุณเลือกคำนำหน้าที่เฉพาะเจาะจงกับลักษณะเฉพาะของผู้พัฒนาหรือบริษัทที่สร้าง

วิธีที่ไม่ถูกต้อง: 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_' ตามด้วยคำนำหน้าของผู้พัฒนาหรือบริษัทและถึงจะเป็นชื่อคำอธิบายตาราง คุณไม่ต้องยึดหลักนี้สำหรับการตั้งคำนำหน้าในฐานข้อมูลที่จะไปใช้ โดยในคลาสฐานข้อมูลของ ExpressionEngine นั้นใช้ 'exp_' เป็นคำนำหน้า (ดังนั้นถ้าใช้ CI อาจจะใช้คำว่า 'ci_' หรืออื่นๆ)

วิธีที่ไม่ถูกต้อง: email_addresses // missing both prefixes pre_email_addresses // missing exp_ prefix exp_email_addresses // missing unique prefix วิธีที่ถูกต้อง: exp_pre_email_addresses

ข้อสังเกตุ: อันนี้ผมได้ทำการแปลใหม่ เพื่อให้ใช้คำแนะนำนี้ได้มากขึ้นโดยไม่จำเป็นต้องใช้ CodeIgniter เสริมอีกนิดข้อควรระวังคือ MySQL นั้นจำกัดตัวอักษรของชื่อตารางที่ 64 ตัวอักษร ดังนั้นหลีกเลี้ยงการใช้คำยาวๆ

หนึ่งไฟล์หนึ่งคลาส

แยกไฟล์สำหรับคลาสแต่ละอันของคุณ ยกเว้นว่าคลาสเหล่านั้นจะ ใกล้ชิดกันอย่างมาก ยกตัวอย่างเช่น ไฟล์ของ ExpressionEngine ซึ่งมีหลายคลาสคือคลาส Database (ฐานข้อมูล) ซึ่งมีทั้งคลาส DB และ DB_Cache และ Magpie plugin ซึ่งมีทั้งคลาส Magpie และ Snoopy

ช่องว่าง

ใช้การแท็บสำหรับช่องว่างในโค้ดของคุณ ไม่ใช่กด space(bar) หลายๆครั้ง สิ่งนี้อาจเห็นเป็นสิ่งเล็กน้อยแต่การใช้แท็บแทนการใช้ space นั้นยอมให้ผู้พัฒนาผู้อื่นเห็นโค้ดของคุณได้ตามที่เขาต้องการตามและปรับเปลี่ยนแก้ไขได้ง่าย และผลประโยชน์ทางอ้อมคือไฟล์เล็กลง โดยเปรียบเทียบระหว่างหนึ่งแท็บกับ 4 space(bar) ตัวอักษร

ขึ้นบรรทัดใหม่

ไฟล์ต่างๆต้องถูกบันทึกด้วยการขึ้นบรรทัดใหม่ของ Unix(Unix line breaks) ซึ่งเป็นปัญหาสำหรับนักพัฒนาที่ทำงานใน Windows มากกว่าแต่ยังไงก็ตาม ให้คุณแน่ใจว่า Text Editor(ตัวแก้ไขไฟล์) ของคุณมีการบันทึกไฟล์ด้วยการขึ้นบรรทัดใหม่ของ Unix

ย่อหน้าโค้ด

ให้คุณใช้การย่อหน้าแบบ Allman (Allman Style) ยกเว้นการประกาศชื่อคลาส วงเล็บปีกกาถูกว่างไว้เสมอบนบรรทัดโดยมีเฉพาะตัวมันเอง และถูกย่อหน้าเข้าไปไว้กับระดับตัวควบคุมการทำงานที่เป็นของพวกมัน

วิธีที่ไม่ถูกต้อง: function foo($bar) { // ... } foreach ($arr as $key => $val) { // ... } if ($foo == $bar) { // ... } else { // ... } for ($i = 0; $i < 10; $i++) { for ($j = 0; $j < 10; $j++) { // ... } } วิธีที่ถูกต้อง: function foo($bar) { // ... } foreach ($arr as $key => $val) { // ... } if ($foo == $bar) { // ... } else { // ... } for ($i = 0; $i < 10; $i++) { for ($j = 0; $j < 10; $j++) { // ... } }

เครื่องหมายก้ามปูและวงเล็บ

โดยทั่วไปเครื่องหมายวงเล็บและก้ามปูเวลาใช้ไม่ควรใส่ช่องว่างเพิ่ม มีข้อยกเว้นเดียวนั้นคือช่องว่างที่จะตามด้วยโครงสร้างควบคุมใน PHP ซึ่งรับ argument ด้วยวงเล็บ (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 ) วิธีที่ถูกต้อง: foreach ($query->result() as $row) // เว้นช่องว่างเดียวแล้วตามด้วยตัวควบคุมโครงสร้างแต่ไม่ได้อยู่ภายในวงเล็บ

เนื้อหาเฉพาะพื้นที่ในแผงควบคุม

เนื้อหาใดๆซึ่งมีผลลัพธ์ในแผงควบคุมควรใช้ตัวแปรภาษาในไฟล์โมดูลภาษา (module's lang) เพื่อรองรับการทำ localization (การจำกัดเฉพาะพื้นที่).

วิธีที่ไม่ถูกต้อง: return "Invalid Selection"; วิธีที่ถูกต้อง: return $LANG->line('invalid_selection');

เมธอดและตัวแปรส่วนตัว

เมธอดและตัวแปรซึ่งถูกใช้งานได้ภายในคลาสของคุณ โดยฟังก์ชัน utility และ helper ซึ่งเป็นเมธอดสาธารณะแต่โค้ดยังไม่สมบูรณ์ ควรจะถูกนำหน้าด้วย underscore(_) เพื่อทำให้เป็นเมธอดหรือตัวแปรส่วนตัวไปก่อน

convert_text() // เมธอดสาธารณะ _convert_text() // เมธอดส่วนตัว

ข้อผิดพลาดของ PHP

โค้ดจะต้องถูกเรียกโดยไม่มีข้อผิดพลาดและไม่ขึ้นคำเตือนและข้อสังเกตุให้เห็น เพื่อตรงความต้องการ ในกรณีนี้ อย่าใช้ตัวแปรที่คุณไม่ได้สร้างขึ้นมาเอง (อย่างเช่นอาเรย์ $_POST) โดยไม่มีการเช็คว่าถูกสร้างหรือไม่ก่อนด้วยคำสั่ง isset()

ให้คุณแน่ใจว่าขณะที่พัฒนา รายงานข้อผิดพลาดถูกเปิดใช้งานสำหรับผู้ใช้ทุกคนและ display_errors ถูกใช้งานในสภาพแวดล้อมในการพัฒนาด้วย PHP คุณสามารถตรวจสอบค่านี้ได้ด้วยดังนี้

if (ini_get('display_errors') == 1) { exit "Enabled"; }

บนเครื่องเซิฟร์เวอร์ที่ปิด display_errors และคุณไม่มีสิทธิที่จะไปเปลี่ยนใน php.ini คุณสามารถเปิดใช้งานมันได้ด้วยคำสั่ง

ini_set('display_errors', 1);

ข้อสังเกตุ: การตั้งค่า display_errors ด้วยคำสั่ง ini_set() จะเกิดขึ้นตอนเวลากำเนินการ(runtime) ซึ่งไม่เหมือนกับการตั้งค่าเปิดการทำงานในสภาพแวดล้อมของ PHP กล่าวคือมันจะไม่เกิดผลใดๆ ถ้าสคริปเกิดมีข้อผิดพลาด สรุปก็คือมันจะไม่ขึ้น Warning (คำเตือน) ถ้าเกิดมี Error (ข้อผิดพลาด)

การใช้แท็กแบบสั้น

ใช้แท็ก PHP แบบตัวเต็มทุกครั้ง ในกรณีที่เซิฟร์เวอร์ไม่ได้เปิดการใช้งาน "การใช้แท็กแบบสั้น" (short_open_tag)

วิธีที่ไม่ถูกต้อง: <? echo $foo; ?> <?=$foo?> วิธีที่ถูกต้อง: <?php echo $foo; ?>

หนึ่งงานหนึ่งบรรทัด

อย่ารวมงานหลายๆงานภายในหนึ่งบรรทัด

วิธีที่ไม่ถูกต้อง: $foo = 'this'; $bar = 'that'; $bat = str_replace($foo, $bar, $bag); วิธีที่ถูกต้อง: $foo = 'this'; $bar = 'that'; $bat = str_replace($foo, $bar, $bag);

สตริง

ใช้สตริงแบบ single quoted (') เสมอยกเว้นว่าคุณต้องการใส่ตัวแปรเพื่อประมวลผล และในกรณีคุณต้องการให้ตัวแปรถูกประมวลผล ให้ใช้วงเล็บปีกกา ({ }) เพื่อป้องกันสิ่งที่ไม่เกี่ยวข้องถูกส่งไปด้วย คุณอาจจะใช้ double-quoted strings (") ถ้าภายในสตริงมีการใช้ single quotes ดังนั้นคุณเลยไม่ต้องใช้ตัวอักษรลี้ภัย(escape characters)

วิธีที่ไม่ถูกต้อง: "My String" // ไม่มีการใส่ตัวแปลดังนั้นไม่ต้องใช้ double quotes "My string $foo" // ต้องการวงเล็บปีกกา 'SELECT foo FROM bar WHERE baz = \'bag\'' // ดูไม่ดี วิธีที่ถูกต้อง: 'My String' "My string {$foo}" "SELECT foo FROM bar WHERE baz = 'bag'"

คิวรี่ SQL

คำหลักที่ใช้งานใน MySQL จะเป็นตัวใหญ่ทั้งหมด: SELECT, INSERT, UPDATE, WHERE, AS, JOIN, ON, IN, etc.

แตกคิวรี่ยาวๆเป็นหลายๆบรรทัดเพื่อความชัดเจนและอ่านง่าย โดยแนะนำว่าให้แตกออกเป็นแต่ละประโยค

วิธีที่ไม่ถูกต้อง: // คำีหลักที่ใช้งานเป็นตัวเล็กและคิวรี่ยาวมากสำหรับ // บรรทัดเดียว (... เป็นสัญลักษณ์เพื่อบอกว่าบรรทัดนี้เป็นบรรทัดที่ต่อจากบรรทัดก่อน) $query = $this->db->query("select foo, bar, baz, foofoo, foobar as raboof, foobaz from exp_pre_email_addresses ...where foo != 'oof' and baz != 'zab' order by foobaz limit 5, 100"); วิธีีที่ถูกต้อง: $query = $this->db->query("SELECT foo, bar, baz, foofoo, foobar AS raboof, foobaz FROM exp_pre_email_addresses WHERE foo != 'oof' AND baz != 'zab' ORDER BY foobaz LIMIT 5, 100");

ค่าที่ถูกเลือกอัตโนมัติสำหรับส่งไปยังฟังก์ชัน

เหมาะสมเมื่อไรให้เราจัดหาค่าอัตโนมัติที่จะถูกส่งไปยังฟังก์ชัน ซึ่งช่วยป้องกันข้อผิดพลาด PHP โดยที่เรียกใช้ผิดและเสนอค่าทางเลือก ซึ่งช่วยประหยัดเวลาเขียนโค้ดได้หลายบรรทัด ตัวอย่างเช่น:

function foo($bar = '', $baz = FALSE)

การทับซ้อนของแท็กตัวแปร

หลีกเลี่ยงการใช้หลายแท็กตัวแปรที่ให้ผลเหมือนกัน ตัวอย่างเช่น แทนที่จะใช้ include=และ exclude= บางทีเราจะยอมให้ include= ดูแลแค่ตัวแปรเดียวตามด้วยคำว่า "not", ยกตัวอย่างเช่น include="not bar". สิ่งนี้จะป้องกันปัญหาตัวแปรทับซ้อนกันหรือมีความกังวลว่าตัวแปรไหนมีความสำคัญกว่าอีกตัวหนึ่ง

เสริม: สิ่งที่เขาบอกเป็นเพียงตัวอย่างให้เห็นภาพ เพื่อที่จะได้ไม่ใช้ตัวแปรพร่ำเพรื่อ แล้วทำให้เกิดความสับสนและกังกลกับการเลือกและใช้ตัวแปร