Ada sesuatu seperti coding standard
untuk Magento 1 , yang disebut di ECG
mana banyak hal harus dihindari atau metode yang tidak boleh digunakan.
Mari kita coba membuat daftar yang mencakup semua kasus yang melemparkan "kesalahan" atau "peringatan" dalam kode Anda.
Di bawah ini Anda akan menemukan daftar dengan semua peringatan yang mungkin. Saya akan memperbarui posting ini secara berkala dan menautkan ke jawaban yang diberikan dan di-upgrade.
Catatan: harap coba menghindari jawaban rangkap;)
Unduh: https://github.com/magento-ecg/coding-standard
EKG Sniffs
Kelas
Kelas Mysql4 sudah usang.
- Cara menangani kelas "Mysql4" yang sudah tidak digunakan saat menulis ulang model sumber daya
- Modul Magento 1.9 anehnya pecah ketika mengubah folder sumber daya dari Mysql4 ke Sumber Daya
Instansiasi objek langsung (kelas% s) tidak disarankan di Magento.
protected $disallowedClassPrefixes = array(
'Mage_',
'Enterprise_',
);
...
PHP
Penggunaan goto tidak disarankan.
...
Namespace untuk kelas "'. $ ExceptionClassName.'" Tidak ditentukan.
...
Anggota kelas pribadi terdeteksi.
...
Anggota kelas pribadi terdeteksi.
...
Performa
Memuat koleksi data Magento yang tidak perlu. Gunakan metode getSize () sebagai gantinya.
fetchAll () bisa jadi memori tidak efisien untuk set data besar.
...
getFirstItem () tidak membatasi hasil pengumpulan koleksi untuk satu item.
- GetFirstItem - https://magento.stackexchange.com/a/179309/46249
Fungsi perhitungan ukuran array% s terdeteksi dalam loop
Metode Model LSD% s terdeteksi dalam lingkaran
Data load% s metode terdeteksi dalam loop
protected $countFunctions = array(
'sizeof',
'count'
);
protected $modelLsdMethods = array(
'load',
'save',
'delete'
);
Keamanan
Kehilangan metode% s () ACL di kelas% 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_: - https://magento.stackexchange.com/a/178642/46249
- file_exists - https://magento.stackexchange.com/a/178641/46249
- ...
Pernyataan "% s" terdeteksi. Manipulasi file tidak disarankan.
... Pernyataan bukan fungsi, tidak ada tanda kurung yang diperlukan.
... Melewati url dilarang.
... Menggabungkan dilarang.
... Variabel di dalamnya tidak aman.
public $urlPattern = '#(https?|ftp)://.*#i';
...
Penggunaan string back quote konstan salah. Kutipan kembali harus selalu di dalam string.
Penggunaan konstruksi bahasa% s tidak disarankan.
return array(
T_EXIT,
T_ECHO,
T_PRINT,
T_BACKTICK
);
...
Penggunaan langsung% s Superglobal terdeteksi.
public $superGlobalErrors = array(
'$GLOBALS',
'$_GET',
'$_POST',
'$_SESSION',
'$_REQUEST',
'$_ENV'
);
public $superGlobalWarning = array(
'$_FILES',
'$_COOKIE',
'$_SERVER',
);
Sql
Kemungkinan pernyataan SQL mentah% s terdeteksi
public $statements = array(
'SELECT',
'UPDATE',
'INSERT',
'CREATE',
'DELETE',
'ALTER',
'DROP'
);
public $queryFunctions = array(
'query',
'raw_query'
);
...
Kemungkinan pernyataan SQL lambat% s terdeteksi
Kemungkinan metode SQL lambat% s terdeteksi
public $adapterMethods = array(
'group',
'having',
'distinct',
'addLikeEscape',
'escapeLikeValue',
'union',
'orHaving',
);
public $rawStatements = array(
'GROUP BY',
'HAVING',
'DISTINCT',
'LIKE',
'UNION',
);
...
String
Kemungkinan ekspresi reguler yang dapat dieksekusi dalam% s. Pastikan polanya tidak mengandung pengubah "e"
public $functions = array(
'preg_replace',
);
...
Gunakan operator + untuk menggabungkan dua string yang terdeteksi
...
Operator identik === tidak digunakan untuk menguji nilai pengembalian fungsi% s
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
Pertanyaan & jawaban terkait untuk praktik terbaik