Это мой код класса:
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;
Спасибо за любую помощь.
Проблема в том, что вы объявляете $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"; } }
Пожалуйста, попробуйте этот код для вашей проблемы.