2012-02-20 5 views
-2

Я хочу получить переменную из функции класса другого файла.
Что-то вроде этого:Получить переменную из функции класса другого файла

file lang.php: 
<?php 
    class lang 
    { 
    function get() 
    { 
    $dubs = "dubs"; 
?> 

file print.php: 
<?php 
    require("lang.php"); 
    lang::get(); 
    echo $dubs; 
?> 

Но это ничего не возвращает ...

+0

, потому что его не статично – Gordon

+2

Вы уверены, что понимаете концепции объектно-ориентированного программирования? – CodeCaster

+1

Верните форму значения 'get' и назначьте ее переменной. Вы должны прочитать о сфере применения PHP: http://php.net/manual/en/language.variables.scope.php. Вам также необходимо создать экземпляр класса, прежде чем вы сможете вызвать 'get'. Я предлагаю прочитать http://www.php.net/manual/en/language.oop5.basic.php –

ответ

0

Правильный путь будет

$lang = new lang(); 
$dubs = $lang->get(); 
echo $dbus; 
+0

Есть ли lang :: get() 'что-то возвращать? – CodeCaster

+0

Нет. Я просто хочу получить его $ dubs. – Damkus

+0

Что делать, если он не хочет, чтобы вы касались его $ dubs? Хм? – cHao

0

$ дублирует будет виден в функции она была создана только. Вы также вызываете метод, как если бы он был статическим. Вы должны использовать обычный синтаксис:

class lang 
{ 
    function get() 
    { 
     $dubs = "dubs"; 
     return $dubs; 
    } 
} 

$lang = new lang() 
echo $lang->get(); 
+0

Все еще ничего не возвращает. – Damkus

+0

В этом случае static vs не имеет большого значения. Для соображений обратной совместимости (PHP4 сделал минимум для поддержки классов), статические функции не должны быть помечены как таковые. – cHao

+0

Только что заметил еще кое-что - обновил мой комментарий, чтобы отразить объем $ dubs. – BenOfTheNorth

1

Переменный $ Dubs можно использовать только внутри функции Get(), потому что вы заявили там. Если вы хотите использовать его снаружи, есть два варианта: или верните его значение в функции (добавьте return $ dubs в конце), и сделайте что-то вроде $ a = lang-> get(); или сделайте его глобальным , объявляя его вне любой функции класса. Какой метод использовать зависит от пропусков класса и функции; если вы собираетесь использовать значение в других функциях этого класса, тогда сделайте его глобальным.

+0

Я не хочу объявлять его вне функции. – Damkus

+0

Затем верните $ dubs; 'в свою функцию и скажите' $ dubs = lang :: get(); 'в вашем основном коде. – cHao

+0

У меня много переменных в этой функции. – Damkus

0

В Луан Нико suggested:

class lang 
{ 
    function get() 
    { 
     return "dubs"; 
    } 
} 
$lang = new lang(); 
$dubs = $lang->get(); 

ИЛИ

class lang 
{ 
    static function get() 
    { 
     return "dubs"; 
    } 
} 

$dubs = lang::get(); 

ИЛИ

class lang 
{ 
    static function get(&$dubs) 
    { 
     $dubs = "dubs"; 
    } 
} 

lang::get($dubs); 

ИЛИ

class lang 
{ 
    static $dubs = "dubs"; 
} 

$dubs = lang::$dubs; 
+0

Не обращай внимания, просто сделал это более дерьмо. – Damkus

Смежные вопросы