Проблема глобализации переменных PHP - PullRequest
0 голосов
/ 26 октября 2011

У меня есть публичный объект. Допустим, X. определен в файле конфигурации.Как я мог использовать этот объект в методе в классе.Я думаю, что когда я глобализирую X в этом методе, он выглядит внутри класса.: (

include('config.php'); //the objec X is defined here
class MyClass{
 public foo(){
 global $X; // I thing It is looking within the class
 }
}

Ответы [ 3 ]

1 голос
/ 26 октября 2011

Я сделал демо ... Надеюсь, это то, что вы хотели .. global.php

<?php

$x=5;

?>

index.php

<?php
include('global.php');
class foo{
private $value;
function __construct(){
global $x;
    $this->value=$x;
}
function show(){
    return $this->value;
}
}
$a= new foo();
echo $a->show();
?>
0 голосов
/ 26 октября 2011

Если вы определили $x в своем файле конфигурации следующим образом:

 <?php
      $x = 'somevalue';
 ?>

, тогда использование global в функции будет работать нормально. Кроме того, вы также можете использовать глобальный массив для доступа к переменной $GLOBALS['x'], однако я не уверен, насколько это распространено или предположено.

Тем не менее, если ваша переменная конфигурации определена внутри функции или класса, то для нее также потребуется глобальная переменная, например:

 <?php

      function loadConfig(){
           // no global here means that $x is not global.
           $x = 'somevalue';
      }
 <?
0 голосов
/ 26 октября 2011

Это работает для меня:

class LemonSalesman {
    public function advertise() {
        echo 'Get your fresh lemons here!';
    }
}

$LemonSalesman = new LemonSalesman();

class MyObject {
    public function foo() {
        global $LemonSalesman;

        $LemonSalesman->advertise();
    }
}

$MyObject = new MyObject();
$MyObject->foo();

Вы уверены, что ваш объект $ X является глобальным?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...