Переменная доступа, определенная в другом файле из класса - PullRequest
2 голосов
/ 06 декабря 2011

Я хотел бы знать, есть ли способ получить доступ к переменной, определенной в другом файле, из класса в PHP.

Пример:

file_01.php

<?php
    $a = 42;
?>

file_02.php

<?php
    require_once('file_01.php');

    class mnyClass
    {
        private $myVar;

        function __construct($var = $a)
        {
            $this->myVar = $var;
        }

        function getVar()
        {
            return $this->var;
        }

        function setVar($var)
        {
            $this->myVar = $var;
        }
    }
?>

Очевидно, мой класс более сложный. Я выбрал этот пример для лучшего понимания того, что я пытаюсь сделать;)

Заранее спасибо.

Ответы [ 4 ]

3 голосов
/ 06 декабря 2011

Вы не можете сделать это:

    function __construct($var = $a)
    {
        $this->myVar = $var;
    }

Что вы можете сделать, это передать его:

<?php
    require_once('file_01.php');
    $mnyClass = new mnyClass($a);// the torch has been passed!

    class mnyClass
    {
        private $myVar;

        function __construct($var = null)
        {
            $this->myVar = $var;
        }

        function getVar()
        {
            return $this->var;
        }

        function setVar($var)
        {
            $this->myVar = $var;
        }
    }
?>

ИЛИ вы можете сделатьэто (это не желательно):

    function __construct($var = null)
    {
        if($var === null) $var = $GLOBALS['a']; //use global $a variable
        $this->myVar = $var;
    }
2 голосов
/ 06 декабря 2011

Вы можете получить доступ к переменной через GLOBALS:

http://php.net/manual/en/language.variables.scope.php

РЕДАКТИРОВАТЬ: немного больше деталей-

function __construct() {
  $this->myVar = $GLOBALS['a'];
}
1 голос
/ 06 декабря 2011

Звучит так, как будто вы настраиваете некоторые приложения по умолчанию.Возможно, имеет смысл определить их как константы:

file_01.php:

define('DEFAULT_VALUE_FOR_A', 42);

file_02.php

class myClass
{
    function __construct($var = DEFAULT_VALUE_FOR_A) {
    }
}
0 голосов
/ 07 декабря 2011

Наконец, я использую этот метод:

<?php

require_once('file_01.php');

class myClass {

    private $myVar;

    function __construct($var = NULL)
    {
        global $a;

        if($var == NULL)
            $this->myVar = $a;
        else
            $this->myVar = $var; 
    }
}

?>

Я объявляю мою переменную $a как глобальную в конструкторе, устанавливаю значение по умолчанию для моих $var равным NULL ипроверить, был ли вызван конструктор с параметром (ами) ($ var == NULL).

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