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
Antworten:
Verbotene Funktion
Datei existiert()
Die Verwendung der Funktion file_exists () ist verboten
falsch:
richtig:
oder
quelle
GetFirstItem
getFirstItem () beschränkt das Ergebnis des Ladens der Sammlung nicht auf ein Element.
falsch:
richtig:
Wenden Sie das Limit an, bevor Sie Daten erfassen.
oder
Beispiele:
Kollektion mit 750 Produkten ...
Ohne vorher einzuschränken:
Mit
getSelect()->limit(1)
:Mit der Verwendung
setPageSize(1, 1)
Hinweis:
Diese Warnung wird weiterhin angezeigt, auch wenn Sie Ihre Sammlung zuvor eingeschränkt haben. Um diese Nachricht loszuwerden, verwenden Sie
$collection->getLastItem()
stattdessen.quelle
Data access method LIMIT detected outside of Resource Model
bekomme bei der Verwendung von Limit`Verbotene Funktion
curl_xyz
Die Verwendung der Funktionen curl_init (), curl_setopt (), curl_exec (), curl_close () ist verboten
falsch:
richtig:
quelle
Uncaught Error: Class 'Custom\Rma\Helper\Varien_Http_Adapter_Curl' not found
. Wie man die Klasse benutzt Ich fand sie im Verkäufer, aber kein Glück.