-2
include "sys.php";

$logger = new logger();
$logger->write("Hello!");

This works. However,

include "sys.php";

$logger = new logger();

function test() {
    $logger->write("Hello!");
}

test();

This does not. The server crashes, error 500.

Why?

Gala
  • 2,592
  • 3
  • 25
  • 33

2 Answers2

0

$logger is not defined inside the function:

include "sys.php";

function test() {
    $logger = new logger();
    $logger->write("Hello!");
}

test();
vard
  • 4,057
  • 2
  • 26
  • 46
Gala
  • 2,592
  • 3
  • 25
  • 33
0

$logger is not available in test function scope as it is created outside test function. You can declare it like this

    global $logger;
    $logger = new logger();
    function test() {
        global $logger;
        $logger->write("Hello!");
    }
    test();