Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP Accessing function in global scope from a class method

I have the following simple code:

$a = 'hello';

function myfunc() {
    echo 'in myfunc';
}

class myclass {
    function __construct() {
        myfunc();
        echo $a;
    }
}

$m1 = new myclass();

The echo $a within the method gives an error as you would expect since $a is in the global scope and cannot be accessed from within the class without first declaring it as global. That is documented in the PHP manual.

The call to myfunc() does work and I don't understand why. It is also declared in the global scope but the method can access it without first declaring it as global. I can't seem to find anything in the PHP manual that explains why this works.

Maybe I've been doing PHP for too long and this is something so simple I've forgotten how it works. Any insight or a link to where in the PHP manual it says you can access a global function from within a class method would be appreciated.

thanks in advance.

like image 933
Joe Shmoe Avatar asked Jul 02 '13 23:07

Joe Shmoe


1 Answers

Functions aren't scoped (except if you use namespaces). Only methods are in classes and variables everywhere.

It's supposed to work; everything is correct: you can call functions, once defined, from everywhere.

like image 162
bwoebi Avatar answered Sep 18 '22 12:09

bwoebi