Hay algo así como una coding standard
de Magento 1 , llamado ECG
en numerosas cosas deben evitarse o métodos que no deben ser utilizados.
Intentemos crear una lista que cubra todos los casos que arrojan "errores" o "advertencias" en su código.
A continuación encontrará una lista con todas las advertencias posibles. Actualizaré esta publicación a intervalos regulares y vincularé a las respuestas dadas y votadas.
Nota: intente evitar respuestas duplicadas;)
Descargar: https://github.com/magento-ecg/coding-standard
Oler ECG
Clases
Las clases de Mysql4 son obsoletas.
- Cómo manejar las clases obsoletas "Mysql4" al reescribir modelos de recursos
- El módulo Magento 1.9 se rompe de forma extraña al cambiar la carpeta de recursos de Mysql4 a Resource
La instanciación directa de objetos (clase% s) no se recomienda en Magento.
protected $disallowedClassPrefixes = array(
'Mage_',
'Enterprise_',
);
...
PHP
Se desaconseja el uso de goto.
...
El espacio de nombres para la clase "'. $ ExceptionClassName.'" No está especificado.
...
Miembro de la clase privada detectado.
...
Miembro de la clase privada detectado.
...
Actuación
Carga innecesaria de una recopilación de datos de Magento. Utilice el método getSize () en su lugar.
fetchAll () puede ser ineficiente en la memoria para grandes conjuntos de datos.
...
getFirstItem () no limita el resultado de la carga de recopilación a un elemento.
- GetFirstItem - /magento//a/179309/46249
Función de cálculo de tamaño de matriz% s detectada en bucle
Modelo de método LSD% s detectado en bucle
Método de carga de datos% s detectado en bucle
protected $countFunctions = array(
'sizeof',
'count'
);
protected $modelLsdMethods = array(
'load',
'save',
'delete'
);
Seguridad
Falta el método% s () ACL en la clase% 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_: - /magento//a/178642/46249
- file_exists - /magento//a/178641/46249
- ...
Se detectó la instrucción "% s". Se desaconsejan las manipulaciones de archivos.
... La declaración no es una función, no se requieren paréntesis.
... Pasar urls está prohibido.
... Concatenar está prohibido.
... Las variables en el interior son inseguras.
public $urlPattern = '#(https?|ftp)://.*#i';
...
Uso incorrecto de la cadena de comillas posteriores constante. Las comillas traseras deben estar siempre dentro de las cadenas.
Se desaconseja el uso de la construcción del lenguaje% s.
return array(
T_EXIT,
T_ECHO,
T_PRINT,
T_BACKTICK
);
...
Uso directo de% s Superglobal detectado.
public $superGlobalErrors = array(
'$GLOBALS',
'$_GET',
'$_POST',
'$_SESSION',
'$_REQUEST',
'$_ENV'
);
public $superGlobalWarning = array(
'$_FILES',
'$_COOKIE',
'$_SERVER',
);
SQL
Posible sentencia de SQL sin procesar% s detectada
public $statements = array(
'SELECT',
'UPDATE',
'INSERT',
'CREATE',
'DELETE',
'ALTER',
'DROP'
);
public $queryFunctions = array(
'query',
'raw_query'
);
...
Posible instrucción SQL lenta% s detectada
Posible método SQL lento% s detectado
public $adapterMethods = array(
'group',
'having',
'distinct',
'addLikeEscape',
'escapeLikeValue',
'union',
'orHaving',
);
public $rawStatements = array(
'GROUP BY',
'HAVING',
'DISTINCT',
'LIKE',
'UNION',
);
...
Instrumentos de cuerda
Posible expresión regular ejecutable en% s. Asegúrese de que el patrón no contenga el modificador "e"
public $functions = array(
'preg_replace',
);
...
Uso del operador + para concatenar dos cadenas detectadas
...
El operador idéntico === no se usa para probar el valor de retorno de la función% 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
Preguntas y respuestas relacionadas con las mejores prácticas
Respuestas:
Función prohibida
El archivo existe()
El uso de la función file_exists () está prohibido
incorrecto:
correcto:
o
fuente
GetFirstItem
getFirstItem () no limita el resultado de la carga de recopilación a un elemento.
incorrecto:
correcto:
Aplicar límite antes de tomar datos.
o
Muestras:
Colección con 750 productos ...
Sin limitar antes:
Con el uso de
getSelect()->limit(1)
:Con el uso
setPageSize(1, 1)
Nota:
Esta advertencia seguirá apareciendo, incluso si limita su colección anteriormente. Para deshacerse de este mensaje, use
$collection->getLastItem()
en su lugar.fuente
Data access method LIMIT detected outside of Resource Model
al utilizar Límite de las aguasFunción prohibida
curl_xyz
El uso de la función curl_init (), curl_setopt (), curl_exec (), curl_close () está prohibido
incorrecto:
correcto:
fuente
Uncaught Error: Class 'Custom\Rma\Helper\Varien_Http_Adapter_Curl' not found
. Cómo usar la clase, la encontré en el proveedor, pero no tuve suerte.