Có một cái gì đó giống như coding standard
cho Magento 1 , được gọi là ECG
nơi nên tránh nhiều thứ hoặc các phương pháp không nên sử dụng.
Hãy thử tạo một danh sách bao gồm tất cả các trường hợp đang ném "lỗi" hoặc "cảnh báo" trong mã của bạn.
Dưới đây bạn sẽ tìm thấy một danh sách với tất cả các cảnh báo có thể. Tôi sẽ cập nhật bài đăng này đều đặn và liên kết đến các câu trả lời được đưa ra và nâng cao.
Lưu ý: vui lòng cố gắng tránh các câu trả lời trùng lặp;)
Tải xuống: https://github.com/magento-ecg/coding-st Chuẩn
Đánh hơi điện tâm đồ
Các lớp học
Các lớp Mysql4 đã lỗi thời.
- Làm thế nào để xử lý các lớp học Mys Mys44 không dùng nữa khi viết lại các mô hình tài nguyên
- Mô-đun Magento 1.9 bị phá vỡ một cách kỳ lạ khi thay đổi thư mục tài nguyên từ Mysql4 sang Resource
Khởi tạo đối tượng trực tiếp (lớp% s) không được khuyến khích trong Magento.
protected $disallowedClassPrefixes = array(
'Mage_',
'Enterprise_',
);
...
PHP
Sử dụng goto là không khuyến khích.
...
Không gian tên cho lớp "'. $ ExceptionClassName.'" Không được chỉ định.
...
Phát hiện thành viên lớp tư nhân.
...
Phát hiện thành viên lớp tư nhân.
...
Hiệu suất
Tải không cần thiết của một bộ sưu tập dữ liệu Magento. Sử dụng phương thức getSize () để thay thế.
fetchAll () có thể không hiệu quả bộ nhớ cho các tập dữ liệu lớn.
...
getFirstItem () không giới hạn kết quả tải bộ sưu tập vào một mục.
- GetFirstItem - /magento//a/179309/46249
Hàm tính toán kích thước mảng% s được phát hiện trong vòng lặp
Mô hình LSD mô hình% s được phát hiện trong vòng lặp
Phương pháp tải dữ liệu% s được phát hiện trong vòng lặp
protected $countFunctions = array(
'sizeof',
'count'
);
protected $modelLsdMethods = array(
'load',
'save',
'delete'
);
Bảo vệ
Thiếu phương thức ACL% s () trong lớp% s.
const PARENT_CLASS_NAME = 'Mage_Adminhtml_Controller_Action';
const REQUIRED_ACL_METHOD_NAME = '_isAllowed';
...
public $forbiddenFunctions = array(
'^is_dir' => null,
'^is_file$' => null,
'^pathinfo$' => null,
);
...
public $forbiddenFunctions = array(
'^assert$' => null,
'^bind_textdomain_codeset$' => null,
'^bindtextdomain$' => null,
'^bz.*$' => null,
'^call_user_func$' => null,
'^call_user_func_array$' => null,
'^chdir$' => null,
'^chgrp$' => null,
'^chmod$' => null,
'^chown$' => null,
'^chroot$' => null,
'^com_load_typelib$' => null,
'^copy$' => null,
'^create_function$' => null,
'^curl_.*$' => null,
'^cyrus_connect$' => null,
'^dba_.*$' => null,
'^dbase_.*$' => null,
'^dbx_.*$' => null,
'^dcgettext$' => null,
'^dcngettext$' => null,
'^dgettext$' => null,
'^dio_.*$' => null,
'^dirname$' => null,
'^dngettext$' => null,
'^domxml_.*$' => null,
'^exec$' => null,
'^fbsql_.*$' => null,
'^fdf_add_doc_javascript$' => null,
'^fdf_open$' => null,
'^fopen$' => null,
'^fsockopen$' => null,
'^ftp_.*$' => null,
'^fwrite$' => null,
'^gettext$' => null,
'^gz.*$' => null,
'^header$' => null,
'^highlight_file$' => null,
'^ibase_.*$' => null,
'^id3_set_tag$' => null,
'^ifx_.*$' => null,
'^image.*$' => null,
'^imap_.*$' => null,
'^ingres_.*$' => null,
'^ircg_.*$' => null,
'^ldap_.*$' => null,
'^link$' => null,
'^mail$' => null,
'^mb_send_mail$' => null,
'^mkdir$' => null,
'^move_uploaded_file$' => null,
'^msession_.*$' => null,
'^msg_send$' => null,
'^msql$' => null,
'^msql_.*$' => null,
'^mssql_.*$' => null,
'^mysql_.*$' => null,
'^odbc_.*$' => null,
'^opendir$' => null,
'^openlog$' => null,
'^ora_.*$' => null,
'^ovrimos_.*$' => null,
'^parse_ini_file$' => null,
'^parse_str$' => null,
'^parse_url$' => null,
'^parsekit_compile_string$' => null,
'^passthru$' => null,
'^pcntl_.*$' => null,
'^posix_.*$' => null,
'^pfpro_.*$' => null,
'^pfsockopen$' => null,
'^pg_.*$' => null,
'^php_check_syntax$' => null,
'^popen$' => null,
'^print_r$' => null,
'^printf$' => null,
'^proc_open$' => null,
'^putenv$' => null,
'^readfile$' => null,
'^readgzfile$' => null,
'^readline$' => null,
'^readlink$' => null,
'^register_shutdown_function$' => null,
'^register_tick_function$' => null,
'^rename$' => null,
'^rmdir$' => null,
'^scandir$' => null,
'^session_.*$' => null,
'^set_include_path$' => null,
'^set_ini$' => null,
'^set_time_limit$' => null,
'^setcookie$' => null,
'^setlocale$' => null,
'^setrawcookie$' => null,
'^shell_exec$' => null,
'^sleep$' => null,
'^socket_.*$' => null,
'^stream_.*$' => null,
'^sybase_.*$' => null,
'^symlink$' => null,
'^syslog$' => null,
'^system$' => null,
'^touch$' => null,
'^trigger_error$' => null,
'^unlink$' => null,
'^vprintf$' => null,
'^mysqli.*$' => null,
'^oci_connect$' => null,
'^oci_pconnect$' => null,
'^quotemeta$' => null,
'^sqlite_popen$' => null,
'^time_nanosleep$' => null,
'^base64_decode$' => null,
'^base_convert$' => null,
'^basename$' => null,
'^chr$' => null,
'^convert_cyr_string$' => null,
'^dba_nextkey$' => null,
'^dns_get_record$' => null,
'^extract$' => null,
'^fdf_.*$' => null,
'^fget.*$' => null,
'^fread$' => null,
'^fflush$' => null,
'^get_browser$' => null,
'^get_headers$' => null,
'^get_meta_tags$' => null,
'^getallheaders$' => null,
'^getenv$' => null,
'^getopt$' => null,
'^headers_list$' => null,
'^hebrev$' => null,
'^hebrevc$' => null,
'^highlight_string$' => null,
'^html_entity_decode$' => null,
'^ibase_blob_import$' => null,
'^id3_get_tag$' => null,
'^import_request_variables$' => null,
'^ircg_nickname_unescape$' => null,
'^ldap_get_values$' => null,
'^mb_decode_mimeheader$' => null,
'^mb_parse_str$' => null,
'^mcrypt_decrypt$' => null,
'^mdecrypt_generic$' => null,
'^msg_receive$' => null,
'^ngettext$' => null,
'^ob_get_contents$' => null,
'^ob_get_flush$' => null,
'^rawurldecode$' => null,
'^shm_get_var$' => null,
'^stripcslashes$' => null,
'^stripslashes$' => null,
'^token_get_all$' => null,
'^unpack$' => null,
'^convert_uudecode$' => null,
'^iconv_mime_decode$' => null,
'^iconv_mime_decode_headers$' => null,
'^iconv_mime_encode$' => null,
'^iconv_set_encoding$' => null,
'^php_strip_whitespace$' => null,
'^addcslashes$' => null,
'^addslashes$' => null,
'^escapeshellarg$' => null,
'^escapeshellcmd$' => null,
'^gettype$' => null,
'^var_dump$' => null,
'^tempnam$' => null,
'^realpath$' => null,
'^linkinfo$' => null,
'^lstat$' => null,
'^stat$' => null,
'^lchgrp$' => null,
'^lchown$' => null,
'^show_source$' => null,
'^is_executable$' => null,
'^is_link$' => null,
'^is_readable$' => null,
'^is_writable$' => null,
'^is_writeable$' => null,
'^is_uploaded_file$' => null,
'^glob$' => null,
'^ssh2_.*$' => null,
'^delete$' => null,
'^file.*$' => null,
);
- ...
- curl_: - /magento//a/178642/46249
- file_exists - /magento//a/178641/46249
- ...
Phát hiện "% s". Thao tác tập tin được khuyến khích.
... Tuyên bố không phải là một chức năng, không yêu cầu dấu ngoặc đơn.
... Vượt qua các url bị cấm.
... Việc kết nối bị cấm.
... Các biến bên trong không an toàn.
public $urlPattern = '#(https?|ftp)://.*#i';
...
Sử dụng không chính xác của chuỗi trích dẫn trở lại hằng số. Báo giá trở lại phải luôn luôn bên trong chuỗi.
Việc sử dụng cấu trúc ngôn ngữ% s không được khuyến khích.
return array(
T_EXIT,
T_ECHO,
T_PRINT,
T_BACKTICK
);
...
Phát hiện trực tiếp% s Superglobal được phát hiện.
public $superGlobalErrors = array(
'$GLOBALS',
'$_GET',
'$_POST',
'$_SESSION',
'$_REQUEST',
'$_ENV'
);
public $superGlobalWarning = array(
'$_FILES',
'$_COOKIE',
'$_SERVER',
);
Sql
Đã phát hiện câu lệnh SQL thô% s
public $statements = array(
'SELECT',
'UPDATE',
'INSERT',
'CREATE',
'DELETE',
'ALTER',
'DROP'
);
public $queryFunctions = array(
'query',
'raw_query'
);
...
Đã phát hiện câu lệnh SQL chậm% s
Có thể phát hiện phương thức SQL chậm% s
public $adapterMethods = array(
'group',
'having',
'distinct',
'addLikeEscape',
'escapeLikeValue',
'union',
'orHaving',
);
public $rawStatements = array(
'GROUP BY',
'HAVING',
'DISTINCT',
'LIKE',
'UNION',
);
...
Dây
Biểu thức chính quy có thể thực thi trong% s. Đảm bảo rằng mẫu không chứa công cụ sửa đổi "e"
public $functions = array(
'preg_replace',
);
...
Sử dụng toán tử + để nối hai chuỗi được phát hiện
...
Toán tử giống hệt === không được sử dụng để kiểm tra giá trị trả về của hàm% s
public $functions = array(
'strpos',
'stripos',
);
- http://php.net/manual/en/feft.strpose.php#refsect1-feft.strpose-examples
- http://php.net/manual/en/feft.stripos.php#refsect1-feft.stripos-examples
Câu hỏi và câu trả lời liên quan để thực hành tốt nhất