简体   繁体   中英

PHP - defining classes inside a function

Is this a bad practice?

like:

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

?

Yes it is bad practice; no it's not.

You're likely going to get both answers, and here's why:

If you use __autoload (or equivalent), calling:

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

is equivalent to:

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

But you'll get better performance out of your code if you avoid using __autoload . And to maintain your code, it's better to put all your includes at the top of the script like you would for import statements in other languages.

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

I would suggest consistency. If you consistently call the include in the functions, you shouldn't have too many issues, but I would choose imports at the beginnings of files, or as autoloads .

I would avoid it.

It is not what another developer would expect, and, as such, would reduce the maintainability of your code.

This is how class loaders work. This is not necessarily bad practice.

Depends on what the function does and why you are doing this. Using autoloading may be more appropriate.

This is generally a bad practice and should be avoided. You should probably consider using an autoloader instead.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM