¿Es esta una mala práctica?PHP - definición de clases dentro de una función
gustan:
function boo(){
require_once("class.moo.php");
}
...
?
¿Es esta una mala práctica?PHP - definición de clases dentro de una función
gustan:
function boo(){
require_once("class.moo.php");
}
...
?
Sí es una mala práctica; no no lo es.
es muy probable va a conseguir ambas respuestas, y he aquí por qué:
Si utiliza __autoload
(o equivalente), llamando al:
function someFunc()
{
$n = new UndefinedClassName();
}
es equivalente a:
function someFunc()
{
include('path/to/UndefinedClassName.php');
//may be require_once, include_once, include, or require
//depending on how autoload is written
$n = new UndefinedClassName();
}
Pero obtendrá un mejor rendimiento de su código si evita usar __autoload
. Y para mantener su código, es mejor poner todos sus includes
en la parte superior de la secuencia de comandos como lo haría para las declaraciones import
en otros idiomas.
include('path/to/UndefinedClassName.php');
...code...
function someFunc()
{
$n = new UndefinedClassName();
}
Sugeriría la consistencia. Si constantemente llama al include
en las funciones, no debería tener demasiados problemas, pero elegiría las importaciones al comienzo de los archivos, o como autoloads
.
Lo evitaría.
No es lo que otro desarrollador esperaría, y, como tal, reduciría el mantenimiento de su código.
"no es lo que otro desarrollador esperaría" a menos que por supuesto, el otro desarrollador está haciendo lo mismo ... – zzzzBov
@zzzzBov: Bueno, me refiero a un desarrollador "normal", por supuesto. Las prácticas no estándar son malas prácticas, IMO. –
estoy de acuerdo con lo que dices en algunos niveles, pero es importante distinguir * de qué estándar estás hablando. No hay un estándar * oficial *, solo existe la forma en que otros programadores han escrito el código en el pasado. Lo más parecido a un estándar * oficial * es la especificación de codificación y la sintaxis, que es liberal por una razón. – zzzzBov
Así es como funcionan los cargadores de clases. Esto no es necesariamente una mala práctica.
Depende de lo que hace la función y por qué lo hace. Usar autoloading puede ser más apropiado.
Si tiene motivos para esto, no veo nada malo al respecto.
Esto es generalmente una mala práctica y debe evitarse. Probablemente deberías considerar usar un autoloader en su lugar.
Como se indicó en otra parte, básicamente es así como funciona el autocargador. – Mchl
Sí, pero el autocargador no tiene los mismos problemas de legibilidad/mantenimiento. – keithjgrant
Posible duplicado de [# 2619573] (http://stackoverflow.com/questions/2619573/how-to-use-include-within-a-function) – drudge
Creo que es un duplicado de [este] (http: //stackoverflow.com/questions/1669707/should-require-once-some-file-php-appear-anywhere-but-the-top-of-the-file) en realidad – greatwolf