Công cụ thành viên

Công cụ trang web


programming:rule

Khác biệt

Đây là những khác biệt giữa hai phiên bản của trang.

Liên kết đến bản xem so sánh này

Phiên bản trước của cả hai bênPhiên bản trước
programming:rule [2016/06/16 11:01] – [Sử dụng phpDesigner 8] hoaquynhtim99programming:rule [2016/06/16 11:04] (hiện tại) – phiên bản cũ đã được khôi phục (2015/11/03 07:20) hoaquynhtim99
Dòng 7: Dòng 7:
  
   * Các file PHP phải có định dạng UNIX (UNIX format).   * Các file PHP phải có định dạng UNIX (UNIX format).
-  * Khuyến nghị các file nên mã hóa dạng UTF-8 without BOM.+  * Các file PHP thông thường được mã hóa dạng ANSI, các file PHP có chứa ngôn ngữ UTF-8 được mã hóa dạng UTF-8 without BOM hoặc UTF-8. 
 + 
 +File PHP mở đầu bằng  
 + 
 +<code php> 
 +<?php 
 +</code> 
 + và kết thúc bằng (Kết thúc ?> của file php nên bỏ trong các file thuần php) 
 +<code php> 
 +?> 
 +</code> 
 +Giữa chúng phân cách với nội dung bằng ít nhất một dòng trống 
 +Ví dụ 
 +<code> 
 +<?php 
 + 
 +// Some code here 
 + 
 +?> 
 +</code> 
 +Không được viết 
 +<code php> 
 +<?php 
 +// Some code here 
 +?> 
 +</code>
  
 ===== Mở đầu mỗi file ===== ===== Mở đầu mỗi file =====
Dòng 15: Dòng 40:
  
 /** /**
- * @Project NUKEVIET 4.x+ * @Project NUKEVIET 3.x 
  * @Author VINADES.,JSC (contact@vinades.vn)  * @Author VINADES.,JSC (contact@vinades.vn)
- * @Copyright (C) 2014 VINADES.,JSC. All rights reserved+ * @Copyright (C) 2010 VINADES.,JSC. All rights reserved
  * @License GNU/GPL version 2 or any later version  * @License GNU/GPL version 2 or any later version
- * @Createdate Tue21 Jan 2014 01:32:02 GMT+ * @Createdate  12/3/20121:2
  */  */
  
 // Some code here // Some code here
  
 +?>
 </code> </code>
 Trong đó: Trong đó:
Dòng 29: Dòng 55:
   * Sau Author là thông tin về tên tác giả, email.   * Sau Author là thông tin về tên tác giả, email.
   * Sau Copyright là thông tin bản quyền.   * Sau Copyright là thông tin bản quyền.
-  * Sau License là giấy phép của dự án 
   * Sau creatdate là thông tin về thời gian.   * Sau creatdate là thông tin về thời gian.
 ==== Quy định riêng đối với file ngôn ngữ ==== ==== Quy định riêng đối với file ngôn ngữ ====
Dòng 36: Dòng 61:
  
 /** /**
-* @Project NUKEVIET 4.x+* @Project NUKEVIET 3.0
 * @Author VINADES.,JSC (contact@vinades.vn) * @Author VINADES.,JSC (contact@vinades.vn)
-* @Copyright (C) 2016 VINADES.,JSC. All rights reserved +* @Copyright (C) 2010 VINADES.,JSC. All rights reserved 
-* @Language English+* @Language Tiếng Việt
 * @License CC BY-SA (http://creativecommons.org/licenses/by-sa/4.0/) * @License CC BY-SA (http://creativecommons.org/licenses/by-sa/4.0/)
-* @Createdate Mar 04201008:22:00 AM+* @Createdate Jul 06201104:38:01 PM
 */ */
  
 // Some code here // Some code here
  
 +?>
 </code> </code>
  
 Ta thêm thông tin ngôn ngữ Language bên dưới thông tin về bản quyền. Ta thêm thông tin ngôn ngữ Language bên dưới thông tin về bản quyền.
  
-===== Chuẩn định dạng các file PHP =====+===== Khoảng cách giữa các dòng ===== 
 +Các khối code không liên quan đến nhau nên được phân cách bởi một dòng trống và chỉ phân cách bởi một dòng duy nhất. 
 +Ví dụ: 
 +<code php> 
 +if( ! defined( 'NV_IS_FILE_LANG' ) ) die( 'Stop!!!' );
  
-NukeViet áp dụng chuẩn định dạng code [[http://www.php-fig.org/psr/psr-2/|PSR-2]], mọi quy các áp dụng có thể xem tại đó.+$page_title = $lang_module['countries'];
  
-Xem bản dịch Tiếng Việt của tài liệu trên: https://github.com/nukeviet/fig-standards/blob/master/accepted/vi/PSR-2-coding-style-guide.md+$array_lang_setup = array(); 
 +$array_lang_setup[] = array( '', $lang_module['site_lang'] );
  
 +$sql = "SELECT `lang` FROM `" . $db_config['prefix'] . "_setup_language` WHERE `setup`=1";
 +$result = $db->sql_query( $sql );
 +
 +while( list( $lang_i ) = $db->sql_fetchrow( $result ) )
 +{
 + if( in_array( $lang_i, $global_config['allow_sitelangs'] ) )
 + {
 + $array_lang_setup[$lang_i] = array( $lang_i, $language_array[$lang_i]['name'] );
 + }
 +}
 +</code>
 +
 +Không nên viết
 +<code php>
 +if( ! defined( 'NV_IS_FILE_LANG' ) ) die( 'Stop!!!' );
 +$page_title = $lang_module['countries'];
 +$array_lang_setup = array();
 +$array_lang_setup[] = array( '', $lang_module['site_lang'] );
 +$sql = "SELECT `lang` FROM `" . $db_config['prefix'] . "_setup_language` WHERE `setup`=1";
 +$result = $db->sql_query( $sql );
 +while( list( $lang_i ) = $db->sql_fetchrow( $result ) )
 +{
 + if( in_array( $lang_i, $global_config['allow_sitelangs'] ) )
 + {
 + $array_lang_setup[$lang_i] = array( $lang_i, $language_array[$lang_i]['name'] );
 + }
 +}
 +</code>
 +
 +Thụt đầu dòng bằng tab, không được thụt đầu dòng bằng kí tự trống hoặc bỏ qua thụt đầu dòng
 +Ví dụ:
 +<code php>
 +while( list( $lang_i ) = $db->sql_fetchrow( $result ) )
 +{
 + if( in_array( $lang_i, $global_config['allow_sitelangs'] ) )
 + {
 + $array_lang_setup[$lang_i] = array( $lang_i, $language_array[$lang_i]['name'] );
 + }
 +}
 +</code>
 +Không viết:
 +<code php>
 +while( list( $lang_i ) = $db->sql_fetchrow( $result ) )
 +{
 +if( in_array( $lang_i, $global_config['allow_sitelangs'] ) )
 +{
 +$array_lang_setup[$lang_i] = array( $lang_i, $language_array[$lang_i]['name'] );
 +}
 +}
 +</code>
 +===== Khoảng cách giữa các kí tự =====
 +  * Đăt trước và sau kí tự = dấu cách
 +  * Đặt sau ( một dấu cách
 +  * Đặt sau dấu , một dấu cách
 +  * Sau if, else, while, foreach, for.. nên bắt đầu ngay với ( không nên đặt dấu cách
  
 +===== Đặt tên biến =====
 +  * Các biến tạm nên bắt đầu bằng _ ví dụ $_tmp, $_title.
 +  * Tên biến không quá ngắn cũng không quá dài, mô tả đúng chức năng của biến <code php>$title, $module_content</code>
 +  * Sử dụng cùng tên biến đối với những câu lệnh cùng chức năng (nếu có thể) ví dụ
 +    * Truy vấn sql dùng <code php>$sql = "SELECT COUNT(*) FROM `" . NV_AUTHORS_GLOBALTABLE . "` WHERE `admin_id`=" . $userid;</code>
 +    * Hay <code php>$result = $db->sql_query( $sql );</code> <code php>$row = $db->sql_fetchrow( $result );</code>
 ===== Array ===== ===== Array =====
-Do chuẩn PSR-2 không có quy định cụ thể về cách viết array, do đó NukeViet áp dụng riêng chuẩn như sau: 
 Nếu mảng ngắn từ một đến hai phần tử ta viết Nếu mảng ngắn từ một đến hai phần tử ta viết
-<code php>$array = array('id' => $id, 'title' => $title);</code>+<code php>$array = array( 'id' => $id, 'title' => $title );</code>
 Nếu dài hơn ta phải viết Nếu dài hơn ta phải viết
 <code php> <code php>
 $array = array(  $array = array( 
-    'id' => $id,  + 'id' => $id,  
-    'title' => $title + 'title' => $title 
 ); );
 </code> </code>
Dòng 71: Dòng 162:
 <code php> <code php>
 $array = array(  $array = array( 
-    'id' => array( + 'id' => array( 
-        'id' => $_id, + 'id' => $_id, 
-            'content' => array( + 'content' => array( 
-                'sub' => $sub, + 'sub' => $sub, 
-                'cat' => $cat + 'cat' => $cat 
-            ), + ), 
-        ),  + ),  
-        'title' => $title + 'title' => $title 
 ); );
 </code> </code>
  
 +===== if, else, while, for... =====
 +Nếu sau if chỉ có một câu lệnh ngắn ta viết câu lệnh cùng một dòng với if
 +<code php>if( $i > 0 ) die( 'Error!!!' );</code>
 +Nếu sau if có nhiều hơn một câu lệnh, câu lệnh quá dài hoặc sau đó có else ta phải xuống hàng bởi {
 +<code php>
 +if( $title > 200 )
 +{
 + echo( 'Tieu de qua lon' );
 +}
 +else
 +{
 + echo( 'Tieu de hop le' );
 +}
 +</code>
 +Không được để kí tự { và } ngang hàng với if, else, for, while:
 +<code php>
 +if( $title > 200 ){
 + echo( 'Tieu de qua lon' );
 +}else{
 + echo( 'Tieu de hop le' );
 +}
  
 +while( $i ){
 + $title .= 'title';
 + -- $i;
 +}
 +</code>
  
 +===== function, class =====
 +Một hàm phải có mô tả bên trên
 +<code php>/**
 + * nv_is_blocker_proxy()
 + *
 + * @param string $is_proxy
 + * @param integer $proxy_blocker
 + * @return
 + */
 +function nv_is_blocker_proxy( $is_proxy, $proxy_blocker )
 +{
 + if( $proxy_blocker == 1 and $is_proxy == 'Strong' ) return true;
 + if( $proxy_blocker == 2 and ( $is_proxy == 'Strong' || $is_proxy == 'Mild' ) ) return true;
 + if( $proxy_blocker == 3 and $is_proxy != 'No' ) return true;
 +
 + return false;
 +}</code>
 +tương tự một lớp cũng cần có mô tả
 +<code php>/**
 + * NVbuffer
 + 
 + * @package NukeViet
 + * @author VINADES.,JSC
 + * @copyright 2012
 + * @version 3.3
 + * @access public
 + */
 +class NVbuffer
 +{
 + var $position = 0;
 +
 +</code>
  
 +
 +Cần hạn chế tối đa việc viết chung mã HTML, JS, CSS vào các file php.
 +
 +
 +===== Ghi chú (comment) =====
 +
 +Khi thiết kế CSDL, cần thêm ghi chú cho mỗi trường dữ liệu.
 +
 +Trong tập tin code, để đúng chuẩn cần viết ghi chú ngắn gọn cho mỗi dòng bằng <code>//</code> và không dùng <code>/* */</code> hay <code>#</code>
 +
 +Ví dụ: Dùng <code>// Ghi chú</code>
 +Không dùng <code># Ghi chú</code>
 +Không dùng <code>/* Ghi chú */</code>
 ====== Đối với các file JS ====== ====== Đối với các file JS ======
  
-Áp dụng chuẩn viết tương tự php+Áp dụng chuẩn của các file php 
 + 
 +Bắđầu bởi mô tả: 
 +<code javascript> 
 +/* * 
 + * @Project NUKEVIET 3.0 
 + * @Author VINADES., JSC ( contact@vinades.vn ) 
 + * @Copyright ( C ) 2010 VINADES., JSC. All rights reserved 
 + * @License GNU/GPL version 2 or any later version 
 + * @Createdate 1 - 31 - 2010 5 : 12 
 + */ 
 +</code> 
 + 
 +Đặt { ngay sau các lệnh. 
 +<code javascript> 
 +if( a == 0 ) { 
 + a = 1; 
 +
 +</code> 
 +Đặt else if ngay sau kí tự 
 +<code javascript> 
 +if( a == 0 ){ 
 + a = 1; 
 +} else if ( a == -1 ) { 
 + break; 
 +
 +</code>
  
 +Các file javascript trong thư mục ''/modules/ten-module/js/'' không nên dùng thư viện Jquery mà chỉ được viết bởi các hàm, thư viện có sẵn của NukeViet.
 ====== Đối với các file TPL ====== ====== Đối với các file TPL ======
 Nếu không có trường hợp đặc biệt nên dùng duy nhất một tên main để dánh dấu khối Nếu không có trường hợp đặc biệt nên dùng duy nhất một tên main để dánh dấu khối
Dòng 106: Dòng 295:
 </code> </code>
  
-> Các file TPL thực chất chứa mã HTML, JS tương tự các file .html, cần dùng 4 ký tự space để đánh dấu các thẻ cha con:+> Các file TPL thực chất chứa mã HTML, JS tương tự các file .html, cần dùng tab để đánh dấu các thẻ cha con:
 <code html> <code html>
 <!-- BEGIN: main --> <!-- BEGIN: main -->
Dòng 147: Dòng 336:
 <code css> <code css>
 .banner_plan { .banner_plan {
-    background: #FFF; + background: #FFF; 
-    border: 1px solid #DADADA; + border: 1px solid #DADADA; 
-    margin-bottom: 10px; + margin-bottom: 10px; 
-    padding: 5px+ padding: 5px
 } }
 </code> </code>
Dòng 188: Dòng 377:
  
 Để định dạng code NukeViet trên phpDesigner 8 bạn cầu hình fomat file php như sau: Để định dạng code NukeViet trên phpDesigner 8 bạn cầu hình fomat file php như sau:
-{{ :programming:chuan_code_psr-2.png |Cấu hình định dạng code PSR-2 cho PhpDesigner 8}}+{{ :programming:formatcodephpdj.jpg?nolink |}}
  
-Sau khi lưu cấu hình, bạn mở từng file cần định dạng và nhấn tổ hợp phím Shift + Ctrl + F1+Sau đó clich vào menu Advanced... Cấu hình theo thông số sau
  
-> **Chú ý**PhpDesigner không định dạng tương tích hoàn toàn với chuẩn PSR-2 nên sau khi định dạng code theo trên, bạn cần thực hiện thêm hai thao tác nữa để có thể hoàn toàn áp dụng đúng chuẩn.+{{ :programming:phpdesigner_8_fomatcode.jpg?nolink |}}
  
-  - Ti các file vừa định dạng, tìm kiếm cụm từ ''Catch ('' nếu có, đưa nó lên ngang hàng với ký tự ''}'' +Sau khi lưu cấu hình, bn mở từng file cần định dạng và nhấn tổ hợp phím Shift + Ctrl + F1
-  - Tìm kiếm ''array('' và ''array ('' nếu có kiểm tra lại và đưa ký tự đóng '')'' xuống hàng mới.+
programming/rule.txt · Sửa đổi lần cuối: 2016/06/16 11:04 bởi hoaquynhtim99