PHP - defining classes inside a function

后端 未结 5 1099
清歌不尽
清歌不尽 2021-01-12 00:04

Is this a bad practice?

like:

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

?

5条回答
  •  被撕碎了的回忆
    2021-01-12 00:09

    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.

提交回复
热议问题