Вызов переменной из другого класса PHP

#php #oop

#php #ооп

Вопрос:

Я нахожусь на этапе изучения ООП в PHP, и я хочу знать, как вызвать переменную из другого класса PHP.

например.

 class first {
    public $var1 = 1;
}
  

Я предполагаю, что это так, но я не знаю, как продолжить:

$first = новый $first();

Ответ №1:

Вы должны сделать что-то вроде этого:

 $first = new first();
echo $first->var1;
  

Ответ №2:

Вам нужно вызвать это следующим образом:

 $first = new first();
$first->var1;
  

Ответ №3:

Для лучшего способа сделайте так:

 class first {
    private $var1 = 1;
    function getVar(){
        return $this->var1;
    }

    function setVar($value){
         $this->var1 = $value;
    }
}
  

Или вот так:

 class first {
    private $var1 = 1;
    function __get(){
        return $this->var1;
    }

    function __set($key,$value){
         $this->$key = $value;
    }
}
  

В этом случае вы можете попробовать обработать некоторые исключения.

Руководство:http://www.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.members

Комментарии:

1. Использование функций получения и установки является лучшим дизайном ООП, поскольку оно абстрагирует внутреннее представление от внешнего доступа. Например, если вы написали много кода, который зависел от var1, но позже решили изменить имя переменной на что-то другое, тогда весь внешний код сломался бы.

2. Это вопрос о том, как вы хотите сделать значение доступным (например, для чтения / записи), и хотите ли вы разрешить изменять значение без уведомления класса. Само по себе это не лучше, смотрите также javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html которая имеет провокационное название, но содержит множество решений, которые играют определенную роль.

Ответ №4:

 <?php

class Myname 
{
   public static $name='Your First Name';
}
class Mylast
{
   public static $last='Your Last Name';
}
class Fullname
{

     public static function staticValue() {
        return Myname::$name."--".Mylast::$last;
    }
}

print Fullname::staticValue() . "n";
?>
  

Ответ №5:

Вам нужно будет создать экземпляр класса:

 $instance=new first();
  

и затем вы можете получить доступ к переменной из этого экземпляра:

 $var=$instance->var1;
  

Обратите внимание — перед именем класса нет $ при создании его экземпляра.