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
Jawaban:
Fungsi Terlarang
file_exists ()
Penggunaan fungsi file_exists () dilarang
salah:
benar:
atau
sumber
GetFirstItem
getFirstItem () tidak membatasi hasil pengumpulan koleksi untuk satu item.
salah:
benar:
Terapkan batas sebelum mengambil data.
atau
Contoh:
Koleksi dengan 750 produk ...
Tanpa membatasi sebelumnya:
Dengan menggunakan
getSelect()->limit(1)
:Dengan menggunakan
setPageSize(1, 1)
catatan:
Peringatan ini akan tetap muncul, bahkan jika Anda membatasi koleksi Anda sebelumnya. Untuk menyingkirkan pesan ini, gunakan
$collection->getLastItem()
saja.sumber
Data access method LIMIT detected outside of Resource Model
ketika menggunakan limit`Fungsi Terlarang
curl_xyz
Penggunaan fungsi curl_init (), curl_setopt (), curl_exec (), curl_close () dilarang
salah:
benar:
sumber
Uncaught Error: Class 'Custom\Rma\Helper\Varien_Http_Adapter_Curl' not found
. Cara menggunakan kelas saya menemukannya di vendor tetapi tidak berhasil.