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

Это мой код класса:

class myClass { public function myFunc() { $myvar = 'Test str'; } public function result() { echo myClass::myFunc()->$myvar; } } 

и я использую это:

  $nCls = new myClass; $nCls->result(); 

Чтобы показать Test str form myFunc() ничего не отображается. Я думаю, проблема заключается в следующем:

 echo myClass::myFunc()->$myvar; 

Спасибо за любую помощь.

Solutions Collecting From Web of "PHP: вызов переменной из другой функции в классе"

Проблема в том, что вы объявляете $myvar только в рамках метода myFunc() . Это означает, что он не виден вне этого метода. Вместо этого объявите его как члена класса:

 class myClass { private $myvar; public function myFunc() { $this->myvar = 'Test str'; } public function result() { echo myClass::myFunc()->$myvar; } } 

Вы смешиваете довольно много концепций.

Во-первых, вам нужно создать новый объект класса myClass :

 $nCls = new myClass(); 

Затем вы можете вызвать функцию-член (метод) в этом классе:

 $nCls->result(); 

В result() вы просто вызываете другой метод, используя $this :

 public function result() { echo $this->myFunc(); } 

Обратите внимание, что это ничего не делает. Переменная $myvar является локальной, а не атрибутом класса. Я советую вам ознакомиться с объектно-ориентированным программированием и, в частности, с объектно-ориентированным PHP .

class myClass {public $ myvar; public function myFunc () {$ this-> myvar = 'Test str'; return $ this; }

public function result () {echo $ this-> myFunc () -> myvar; }}

$ nCls = новый myClass; $ NCls-> результат (а);

Вы можете это сделать, но это не очень хорошая практика.

проблема в области, вы не можете вызвать переменную внутри другой функции, определить свойство для класса и установить его из функции, а затем вернуть свойство с result() :

 class myClass { public $myvar; public function myFunc() { $this->myvar = 'Test str'; } public function result() { echo $this->myvar; } } 
 include "views.php"; class Controller extends views{ function index(){ $this->head(); $this->home(); } function privacy(){ $this->head(); $this->privc(); } function about(){ $this->head(); $this->abt(); } function address(){ $this->head(); $this->add(); } } $obj=new Controller(); if(isset($_GET['fun'])){ $obj->$_GET['fun'](); } else{ $obj->index(); } This is views.php code class views{ function head(){ include "views/header.php"; echo "<br>this is header"; } function abt(){ include "views/about.php"; echo "<br>This is about us page"; } function home(){ include "views/home.php"; echo "<br>This is Home page"; } function privc(){ include "views/privacy.php"; echo "<br>This is privacy page"; } function add(){ include "views/address.php"; echo "<br>This is address page"; } } 

Пожалуйста, попробуйте этот код для вашей проблемы.