دسترسی به متغییرها و فانکشن های خارج از یک کلاس

vahid1993

تازه وارد
سلام به همگی

یه کلاس ساختم که خالیه ..حالا میخام یه variable که خارج از این کلاس قرار داره وارد این کلاس کنم توی stackoverflow   گفته بودن باید از global  استفاده کنم ولی بازم نشد.فرض کنید این variable اوردیم توی کلاس چطور از طریق instance اونو نمایش بدیم ؟و اینکه بازم فانکشن هام عین variable  ها هستن ... ولی وقتی از define استفاده میکنیم توی کلاس دسترسی مستقیم به مقدارش داریم ..

کد:
<?php

// THIS IS A FUNCTION OUTSIDE  THE CLASS
function language(){
    $language = "php";
    return $language;
}

//THIS IS DEFINED OUTSIDE THE CLASS  
define("NAME","HTML");

//THIS IS A VARIABLE OUTSIDE THE CLASS
$number = 10;

//THIS IS THE CLASS
class Show {
    public $name = NAME;
    public $language = language();
    public $num = $number; 
}

//THIS IS AN INSTANCE OF CLASS
$show = new Show();
echo $show->name . "<br>"; // WORKS FINE
echo $show->language() . "<br>"; //  NOT WORKS !
echo $show->num; // NOT WORKS !

// SO WHY DO FUNCTIONS AND VARIABLES SHOW PARSE ERROR ?!  

?>
 ​
 
آخرین ویرایش توسط مدیر:

MahdiY

راهبر انجمن
توی کدی که نوشتید در خط 18 شما Parse error دارید (یعنی توقف برنامه). کد صحیح بصورت زیر هست:

کد:
<?php

// THIS IS A FUNCTION OUTSIDE  THE CLASS
function language(){
    $language = "php";
    return $language;
}

//THIS IS DEFINED OUTSIDE THE CLASS  
define("NAME","HTML");

//THIS IS A VARIABLE OUTSIDE THE CLASS
$number = 10;

//THIS IS THE CLASS
class Show {
    public $name = NAME;
	
	function __construct(){
		global $number;
		
		$this->num = $number;
	}
	
	function language(){
		return language();
	}
}

//THIS IS AN INSTANCE OF CLASS
$show = new Show();
echo $show->name . "<br>"; // WORKS FINE
echo $show->language() . "<br>"; //  NOT WORKS !
echo $show->num; // NOT WORKS !

// SO WHY DO FUNCTIONS AND VARIABLES SHOW PARSE ERROR ?!  

?>
 

vahid1993

تازه وارد
توی کدی که نوشتید در خط 18 شما Parse error دارید (یعنی توقف برنامه). کد صحیح بصورت زیر هست:

<?php

// THIS IS A FUNCTION OUTSIDE THE CLASS
function language(){
$language = "php";
return $language;
}

//THIS IS DEFINED OUTSIDE THE CLASS
define("NAME","HTML");

//THIS IS A VARIABLE OUTSIDE THE CLASS
$number = 10;

//THIS IS THE CLASS
class Show {
public $name = NAME;

function __construct(){
global $number;

$this->num = $number;
}

function language(){
return language();
}
}

//THIS IS AN INSTANCE OF CLASS
$show = new Show();
echo $show->name . "<br>"; // WORKS FINE
echo $show->language() . "<br>"; // NOT WORKS !
echo $show->num; // NOT WORKS !

// SO WHY DO FUNCTIONS AND VARIABLES SHOW PARSE ERROR ?!

?>

آقا دمتون گرم که جواب دادید .. فقط یه سوال اینکه چرا نمیشه به متغییرها و فانکشن ها به صورت مستقیم مثه Constance  ها توی کلاس دسترسی پیدا کرد؟

 

MahdiY

راهبر انجمن
حوزه تعریف توابع، ثابت ها و متغییر ها متفاوت هست

توابع و ثابت های تعریف شده در همه جای کد در دسترس هستند

public $language = language();


این کد دو تا مشکل داره. اول اینکه شما نمیتونید برای مقدار دهی پیشفرض فیلد ها از تابع استفاده کنید

بعد به فرض اینکه تابع مقدار php را به فیلد language بدهد شما فیلد (متغییر) language دارید نه متد (تابع) language

در مورد فیلد num و مقدار دهی اون در نظر داشته باشید حوزه تعریف متغییر number داخل کلاس نیست. پس اون را باید global کنید و بعد داخل فیلد بریزید

برای یادگیری بیشتر میتونید به صفحات زیر مراجعه کنید:





 
بالا