Bir gibi bir şey yoktur coding standard
için Magento 1 olarak adlandırılan, ECG
pek çok şey kullanılmamalıdır yöntemler kaçınılması veya olması gereken yerde.
Kodunuza "hata" veya "uyarı" atan tüm durumları kapsayan bir liste oluşturmaya çalışalım.
Aşağıda tüm olası uyarıları içeren bir liste bulacaksınız. Bu yazıyı düzenli aralıklarla güncelleyeceğim ve verilen ve yükseltilmiş cevaplara bağlantı vereceğim.
Not: Lütfen yinelenen cevaplardan kaçınmaya çalışın;)
İndir: https://github.com/magento-ecg/coding-standard
EKG Koklamaları
Sınıflar
Mysql4 sınıfları kullanılmıyor.
- Kaynak modelleri yeniden yazarken kullanımdan kaldırılmış “Mysql4” sınıflarını işleme
- Kaynak klasörü Mysql4'ten Kaynak olarak değiştirirken Magento 1.9 modülü tuhaf bir şekilde kırılıyor
Magento'da doğrudan nesne örneklemesi (% s sınıfı) önerilmez.
protected $disallowedClassPrefixes = array(
'Mage_',
'Enterprise_',
);
...
PHP
Goto kullanımı önerilmez.
...
"'. $ ExceptionClassName.'" Sınıfı için ad alanı belirtilmedi.
...
Özel sınıf üyesi tespit edildi.
...
Özel sınıf üyesi tespit edildi.
...
Verim
Magento veri toplamasının gereksiz yüklenmesi. Bunun yerine getSize () yöntemini kullanın.
fetchAll (), büyük veri kümeleri için bellek yetersiz olabilir.
...
getFirstItem (), toplama yükünün sonucunu bir öğe ile sınırlamaz.
- GetFirstItem - https://magento.stackexchange.com/a/179309/46249
Dizi boyutu hesaplama işlevi% s döngüde algılandı
Döngüde% s model LSD yöntemi algılandı
Döngüde veri yükü% s yöntemi algılandı
protected $countFunctions = array(
'sizeof',
'count'
);
protected $modelLsdMethods = array(
'load',
'save',
'delete'
);
Güvenlik
% S sınıfında% s () ACL yöntemi eksik.
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_: - https://magento.stackexchange.com/a/178642/46249
- file_exists - https://magento.stackexchange.com/a/178641/46249
- ...
"% s" ifadesi algılandı. Dosya manipülasyonları önerilmez.
... İfade bir işlev değildir, parantez gerekmez.
... URL'leri geçmek yasaktır.
... Zincirleme yapmak yasaktır.
... İçindeki değişkenler güvensizdir.
public $urlPattern = '#(https?|ftp)://.*#i';
...
Geri alıntı dize sabitinin yanlış kullanımı. Geri tırnak işaretleri her zaman dizgilerin içinde olmalıdır.
% S dil yapısının kullanımı önerilmez.
return array(
T_EXIT,
T_ECHO,
T_PRINT,
T_BACKTICK
);
...
% S Superglobal'ın doğrudan kullanımı tespit edildi.
public $superGlobalErrors = array(
'$GLOBALS',
'$_GET',
'$_POST',
'$_SESSION',
'$_REQUEST',
'$_ENV'
);
public $superGlobalWarning = array(
'$_FILES',
'$_COOKIE',
'$_SERVER',
);
sQL
% S olası ham SQL ifadesi algılandı
public $statements = array(
'SELECT',
'UPDATE',
'INSERT',
'CREATE',
'DELETE',
'ALTER',
'DROP'
);
public $queryFunctions = array(
'query',
'raw_query'
);
...
% S olası yavaş SQL ifadesi algılandı
% S olası yavaş SQL yöntemi algılandı
public $adapterMethods = array(
'group',
'having',
'distinct',
'addLikeEscape',
'escapeLikeValue',
'union',
'orHaving',
);
public $rawStatements = array(
'GROUP BY',
'HAVING',
'DISTINCT',
'LIKE',
'UNION',
);
...
Teller
% S içinde olası yürütülebilir düzenli ifade. Desenin "e" değiştiricisini içermediğinden emin olun
public $functions = array(
'preg_replace',
);
...
Tespit edilen iki dizeyi birleştirmek için + operatörünün kullanımı
...
% S fonksiyonunun dönüş değerini test etmek için aynı operatör === kullanılmıyor
public $functions = array(
'strpos',
'stripos',
);
- http://php.net/manual/en/function.strpos.php#refsect1-function.strpos-examples
- http://php.net/manual/en/function.stripos.php#refsect1-function.stripos-examples
En iyi uygulama için ilgili sorular ve cevaplar