PHP - 在函数内定义类

时间:2011-02-03 19:16:03

标签: php oop class function

这是一种不好的做法吗?

像:

function boo(){
  require_once("class.moo.php");
}
...

5 个答案:

答案 0 :(得分:8)

这是不好的做法; 不是。

你可能会得到两个答案,这就是原因:

如果您使用__autoload(或等效),请致电:

function someFunc()
{
  $n = new UndefinedClassName();
}

相当于:

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();
}

但如果您避免使用__autoload,那么您的代码会获得更好的性能。为了维护您的代码,最好将所有includes放在脚本的顶部,就像使用其他语言的import语句一样。

include('path/to/UndefinedClassName.php');
...code...
function someFunc()
{
  $n = new UndefinedClassName();
}

我会建议一致性。如果您一直在函数中调用include,则不应该有太多问题,但我会在文件的开头选择导入,或者选择autoloads

答案 1 :(得分:4)

我会避免它。

这不是其他开发人员所期望的,因此会降低代码的可维护性。

答案 2 :(得分:1)

这就是类加载器的工作方式。这不一定是不好的做法。

取决于函数的功能以及执行此操作的原因。使用autoloading可能更合适。

答案 3 :(得分:1)

这通常是一种不好的做法,应该避免。您应该考虑使用autoloader代替。

答案 4 :(得分:-1)

如果你有理由我没有看到任何不好的事情。