Es gibt so etwas wie ein coding standard
für Magento 1 , ECG
bei dem zahlreiche Dinge vermieden werden sollten oder Methoden, die nicht verwendet werden sollten.
Versuchen wir, eine Liste zu erstellen, die alle Fälle abdeckt, in denen "Fehler" oder "Warnungen" in Ihrem Code auftreten.
Unten finden Sie eine Liste mit allen möglichen Warnungen. Ich werde diesen Beitrag in regelmäßigen Abständen aktualisieren und auf gegebene und positiv bewertete Antworten verlinken.
Hinweis: Bitte versuchen Sie doppelte Antworten zu vermeiden;)
Download: https://github.com/magento-ecg/coding-standard
EKG schnüffelt
Klassen
Mysql4-Klassen sind veraltet.
- Umgang mit veralteten "Mysql4" -Klassen beim Umschreiben von Ressourcenmodellen
- Das Magento 1.9-Modul bricht seltsamerweise ab, wenn der Ressourcenordner von MySQL4 in Ressource geändert wird
Von direkter Objektinstanziierung (Klasse% s) wird in Magento abgeraten.
protected $disallowedClassPrefixes = array(
'Mage_',
'Enterprise_',
);
...
PHP
Von der Verwendung von goto wird abgeraten.
...
Der Namespace für die Klasse "'. $ ExceptionClassName.'" Ist nicht angegeben.
...
Privates Klassenmitglied erkannt.
...
Privates Klassenmitglied erkannt.
...
Performance
Unnötiges Laden einer Magento-Datenerfassung. Verwenden Sie stattdessen die Methode getSize ().
fetchAll () kann für große Datenmengen speichereffizient sein.
...
getFirstItem () beschränkt das Ergebnis des Ladens der Sammlung nicht auf ein Element.
- GetFirstItem - /magento//a/179309/46249
Arraygrößenberechnungsfunktion% s in Schleife erkannt
Modell LSD-Methode% s in Schleife erkannt
Datenlast% s Methode in Schleife erkannt
protected $countFunctions = array(
'sizeof',
'count'
);
protected $modelLsdMethods = array(
'load',
'save',
'delete'
);
Sicherheit
Fehlende% s () ACL-Methode in der% s-Klasse.
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
- ...
Anweisung "% s" erkannt. Von Dateimanipulationen wird abgeraten.
... Anweisung ist keine Funktion, es sind keine Klammern erforderlich.
... das Weitergeben von URLs ist verboten.
... Verketten ist verboten.
... Variablen im Inneren sind unsicher.
public $urlPattern = '#(https?|ftp)://.*#i';
...
Falsche Verwendung der Back-Quote-String-Konstante. Hintere Anführungszeichen sollten immer in Zeichenfolgen stehen.
Von der Verwendung des Sprachkonstrukts% s wird abgeraten.
return array(
T_EXIT,
T_ECHO,
T_PRINT,
T_BACKTICK
);
...
Direkte Verwendung von% s Superglobal erkannt.
public $superGlobalErrors = array(
'$GLOBALS',
'$_GET',
'$_POST',
'$_SESSION',
'$_REQUEST',
'$_ENV'
);
public $superGlobalWarning = array(
'$_FILES',
'$_COOKIE',
'$_SERVER',
);
Sql
Mögliche SQL-Rohanweisung% s erkannt
public $statements = array(
'SELECT',
'UPDATE',
'INSERT',
'CREATE',
'DELETE',
'ALTER',
'DROP'
);
public $queryFunctions = array(
'query',
'raw_query'
);
...
Mögliche langsame SQL-Anweisung% s erkannt
Mögliche langsame SQL-Methode% s erkannt
public $adapterMethods = array(
'group',
'having',
'distinct',
'addLikeEscape',
'escapeLikeValue',
'union',
'orHaving',
);
public $rawStatements = array(
'GROUP BY',
'HAVING',
'DISTINCT',
'LIKE',
'UNION',
);
...
Saiten
Möglicher ausführbarer regulärer Ausdruck in% s. Stellen Sie sicher, dass das Muster keinen Modifikator "e" enthält
public $functions = array(
'preg_replace',
);
...
Verwendung des Operators + zum Verketten von zwei erkannten Zeichenfolgen
...
Der identische Operator === wird nicht zum Testen des Rückgabewerts der% s-Funktion verwendet
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
Verwandte Fragen und Antworten für Best Practice