phpclassvariablesscopeglobal

PHP global variable scope inside a class


I have the following script

myclass.php

<?php

$myarray = array('firstval','secondval');

class littleclass {
  private $myvalue;

  public function __construct() {
    $myvalue = "INIT!";
  }

  public function setvalue() {
    $myvalue = $myarray[0];   //ERROR: $myarray does not exist inside the class
  }
}

?>

Is there a way to make $myarray available inside the littleclass, through simple declaration? I don't want to pass it as a parameter to the constructor if that was possible.

Additionally, I hope that you actually CAN make global variables visible to a php class in some manner, but this is my first time facing the problem so I really don't know.


Solution

  • include global $myarray at the start of setvalue() function.

    public function setvalue() {
        global $myarray;
        $myvalue = $myarray[0];
    }
    

    UPDATE:
    As noted in the comments, this is bad practice and should be avoided.
    A better solution would be this: https://stackoverflow.com/a/17094513/3407923.