Existe algo como a coding standard
para o Magento 1 , chamado ECG
onde várias coisas devem ser evitadas ou métodos que não devem ser usados.
Vamos tentar criar uma lista que cubra todos os casos que geram "erros" ou "aviso" no seu código.
Abaixo, você encontrará uma lista com todos os avisos possíveis. Atualizo este post em intervalos regulares e vinculo a respostas dadas e votadas.
Nota: tente evitar respostas duplicadas;)
Faça o download: https://github.com/magento-ecg/coding-standard
Farejadores de ECG
Aulas
As classes do Mysql4 são obsoletas.
- Como lidar com classes “Mysql4” obsoletas ao reescrever modelos de recursos
- Módulo Magento 1.9 quebras estranhamente ao alterar a pasta de recursos do Mysql4 para Resource
A instanciação direta de objetos (classe% s) é desencorajada no Magento.
protected $disallowedClassPrefixes = array(
'Mage_',
'Enterprise_',
);
...
PHP
O uso de goto é desencorajado.
...
O espaço para nome da classe "'. $ ExceptionClassName.'" Não está especificado.
...
Membro da classe privada detectado.
...
Membro da classe privada detectado.
...
atuação
Carregamento desnecessário de uma coleção de dados Magento. Use o método getSize ().
fetchAll () pode ser ineficiente na memória para grandes conjuntos de dados.
...
getFirstItem () não limita o resultado do carregamento da coleção a um item.
- GetFirstItem - /magento//a/179309/46249
Função de cálculo de tamanho de matriz% s detectada em loop
Método% s do modelo LSD detectado em loop
Método% s de carregamento de dados detectado em loop
protected $countFunctions = array(
'sizeof',
'count'
);
protected $modelLsdMethods = array(
'load',
'save',
'delete'
);
Segurança
Falta o método ACL% s () na 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_: - /magento//a/178642/46249
- file_exists - /magento//a/178641/46249
- ...
Instrução "% s" detectada. Manipulações de arquivos são desencorajadas.
... A instrução não é uma função, sem parênteses.
... Passar URLs é proibido.
... Concatenar é proibido.
... Variáveis internas são inseguras.
public $urlPattern = '#(https?|ftp)://.*#i';
...
Uso incorreto da constante de sequência de aspas posteriores. As aspas devem estar sempre dentro das strings.
O uso da construção de linguagem% s é desencorajado.
return array(
T_EXIT,
T_ECHO,
T_PRINT,
T_BACKTICK
);
...
Uso direto de% s Superglobal detectado.
public $superGlobalErrors = array(
'$GLOBALS',
'$_GET',
'$_POST',
'$_SESSION',
'$_REQUEST',
'$_ENV'
);
public $superGlobalWarning = array(
'$_FILES',
'$_COOKIE',
'$_SERVER',
);
Sql
Possível instrução SQL bruta% s detectada
public $statements = array(
'SELECT',
'UPDATE',
'INSERT',
'CREATE',
'DELETE',
'ALTER',
'DROP'
);
public $queryFunctions = array(
'query',
'raw_query'
);
...
Possível instrução SQL lenta% s detectada
Possível 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',
);
...
Cordas
Possível expressão regular executável em% s. Certifique-se de que o padrão não contenha o modificador "e"
public $functions = array(
'preg_replace',
);
...
Uso do operador + para concatenar duas seqüências detectadas
...
Operador idêntico === não é usado para testar o valor de retorno da função% 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
Perguntas e respostas relacionadas para as melhores práticas
Respostas:
Função Proibida
o arquivo existe()
É proibido o uso da função file_exists ()
incorreta:
corrigir:
ou
fonte
GetFirstItem
getFirstItem () não limita o resultado do carregamento da coleção a um item.
incorreta:
corrigir:
Aplique o limite antes de pegar os dados.
ou
Exemplos:
Coleção com 750 produtos ...
Sem limitar antes:
Com o uso
getSelect()->limit(1)
:Com o uso
setPageSize(1, 1)
Nota:
Este aviso ainda será exibido, mesmo se você limitar sua coleção antes. Para se livrar dessa mensagem, use
$collection->getLastItem()
.fonte
Data access method LIMIT detected outside of Resource Model
ao usar limit` #Função Proibida
curl_xyz
É proibido o uso da função curl_init (), curl_setopt (), curl_exec (), curl_close ()
incorreta:
corrigir:
fonte
Uncaught Error: Class 'Custom\Rma\Helper\Varien_Http_Adapter_Curl' not found
. Como usar a classe que encontrei no fornecedor, mas sem sorte.