2011-02-10 3 views
4

Могу ли я изменить функцию или переменную, определенную в классе, вне класса, но без использования глобальных переменных?PHP - изменить переменную класса/функцию извне класса

это класс, внутри включаемого файла # 2:

class moo{ 
    function whatever(){ 
    $somestuff = "...."; 
    return $somestuff; // <- is it possible to change this from "include file #1" 
    } 
} 

в основном приложении, это то, как используется класс:

include "file1.php"; 
include "file2.php"; // <- this is where the class above is defined 

$what = $moo::whatever() 
... 
+0

Что вы подразумеваете под «include file # 1»? – Gordon

+0

'$ somestuff' представляется локальной переменной. Не можете ли вы просто изменить значение '$ what' после' $ what = moo :: whatever() '? – BoltClock

+1

Что значит «изменить функцию»? – Dogbert

ответ

6

Вы спрашиваете о геттерах и сеттерах или Static variables

class moo{ 

    // Declare class variable 
    public $somestuff = false; 

    // Declare static class variable, this will be the same for all class 
    // instances 
    public static $myStatic = false; 

    // Setter for class variable 
    function setSomething($s) 
    { 
     $this->somestuff = $s; 
     return true; 
    } 

    // Getter for class variable 
    function getSomething($s) 
    { 
     return $this->somestuff; 
    } 
} 

moo::$myStatic = "Bar"; 

$moo = new moo(); 
$moo->setSomething("Foo"); 
// This will echo "Foo"; 
echo $moo->getSomething(); 

// This will echo "Bar" 
echo moo::$myStatic; 

// So will this 
echo $moo::$myStatic; 
1

Установите его в качестве атрибута, например, в конструктор, тогда метод возвращает любое значение в атрибуте. Таким образом, вы можете изменить значение в разных экземплярах в любом месте, где вы можете получить ссылку на них.

3

Есть несколько возможностей для достижения своей цели. Вы можете написать getMethod и setMethod в своем классе, чтобы установить и получить переменную.

class moo{ 

    public $somestuff = 'abcdefg'; 

    function setSomestuff (value) { 
    $this->somestuff = value; 
    } 

    function getSomestuff() { 
    return $this->somestuff; 
    } 
} 
Смежные вопросы