Il y a quelque chose comme un coding standard
pour Magento 1 , appelé ECG
où de nombreuses choses devraient être évitées ou des méthodes qui ne devraient pas être utilisées.
Essayons de créer une liste qui couvre tous les cas qui génèrent des "erreurs" ou des "avertissements" dans votre code.
Vous trouverez ci-dessous une liste avec tous les avertissements possibles. Je mettrai à jour ce post à intervalles réguliers et un lien vers des réponses données et votées.
Remarque: veuillez essayer d'éviter les réponses en double;)
Téléchargement: https://github.com/magento-ecg/coding-standard
ECG renifle
Des classes
Les classes Mysql4 sont obsolètes.
- Comment gérer les classes «Mysql4» obsolètes lors de la réécriture de modèles de ressources
- Le module Magento 1.9 se casse étrangement lors du changement du dossier de ressources de Mysql4 en ressource
L'instanciation directe d'objets (classe% s) est déconseillée dans Magento.
protected $disallowedClassPrefixes = array(
'Mage_',
'Enterprise_',
);
...
PHP
L'utilisation de goto est déconseillée.
...
L'espace de noms pour la classe "'. $ ExceptionClassName.'" N'est pas spécifié.
...
Membre de classe privé détecté.
...
Membre de classe privé détecté.
...
Performance
Chargement inutile d'une collecte de données Magento. Utilisez plutôt la méthode getSize ().
fetchAll () peut être inefficace en mémoire pour les grands ensembles de données.
...
getFirstItem () ne limite pas le résultat du chargement de la collection à un élément.
- GetFirstItem - https://magento.stackexchange.com/a/179309/46249
Fonction de calcul de la taille du tableau% s détectée dans la boucle
Méthode LSD du modèle% s détectée dans la boucle
Méthode de chargement de données% s détectée dans la boucle
protected $countFunctions = array(
'sizeof',
'count'
);
protected $modelLsdMethods = array(
'load',
'save',
'delete'
);
Sécurité
Manque la méthode ACL% s () dans la classe% 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
- ...
Instruction "% s" détectée. Les manipulations de fichiers sont déconseillées.
... L'instruction n'est pas une fonction, aucune parenthèse n'est requise.
... Il est interdit de passer des URL.
... La concaténation est interdite.
... Les variables à l'intérieur ne sont pas sécurisées.
public $urlPattern = '#(https?|ftp)://.*#i';
...
Utilisation incorrecte de la constante de chaîne de guillemets inversés. Les guillemets arrière doivent toujours être à l'intérieur des chaînes.
L'utilisation de la construction de langage% s est déconseillée.
return array(
T_EXIT,
T_ECHO,
T_PRINT,
T_BACKTICK
);
...
Utilisation directe de% s Superglobal détectée.
public $superGlobalErrors = array(
'$GLOBALS',
'$_GET',
'$_POST',
'$_SESSION',
'$_REQUEST',
'$_ENV'
);
public $superGlobalWarning = array(
'$_FILES',
'$_COOKIE',
'$_SERVER',
);
Sql
Instruction SQL brute possible% s détectée
public $statements = array(
'SELECT',
'UPDATE',
'INSERT',
'CREATE',
'DELETE',
'ALTER',
'DROP'
);
public $queryFunctions = array(
'query',
'raw_query'
);
...
Instruction SQL lente possible% s détectée
Détection possible d'une méthode SQL lente% s
public $adapterMethods = array(
'group',
'having',
'distinct',
'addLikeEscape',
'escapeLikeValue',
'union',
'orHaving',
);
public $rawStatements = array(
'GROUP BY',
'HAVING',
'DISTINCT',
'LIKE',
'UNION',
);
...
Cordes
Expression régulière exécutable possible dans% s. Assurez-vous que le motif ne contient pas de modificateur "e"
public $functions = array(
'preg_replace',
);
...
Utilisation de l'opérateur + pour concaténer deux chaînes détectées
...
L'opérateur identique === n'est pas utilisé pour tester la valeur de retour de la fonction% 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
Questions et réponses connexes pour les meilleures pratiques
Réponses:
Fonction interdite
le fichier existe()
L'utilisation de la fonction file_exists () est interdite
Incorrect:
correct:
ou
la source
GetFirstItem
getFirstItem () ne limite pas le résultat du chargement de la collection à un élément.
Incorrect:
correct:
Appliquer la limite avant de récupérer les données.
ou
Exemples:
Collection avec 750 produits ...
Sans limiter avant:
Avec l'aide
getSelect()->limit(1)
:Avec l'aide
setPageSize(1, 1)
Remarque:
Cet avertissement apparaîtra toujours, même si vous limitez votre collection auparavant. Pour vous débarrasser de ce message, utilisez
$collection->getLastItem()
plutôt.la source
Data access method LIMIT detected outside of Resource Model
lorsque j'utilise limite`Fonction interdite
curl_xyz
L'utilisation des fonctions curl_init (), curl_setopt (), curl_exec (), curl_close () est interdite
Incorrect:
correct:
la source
Uncaught Error: Class 'Custom\Rma\Helper\Varien_Http_Adapter_Curl' not found
. Comment utiliser la classe je l'ai trouvée chez le vendeur mais pas de chance.