Прототипы в PHP

Ms

Новичок
Прототипы в PHP

Решил изучить работу ООП в PHP :)
и вот картина по аналогии с Flash

Ms= function( ){}

Ms.prototype.php= 80;

http= new Ms( );
www= new Ms( );
inet= new Ms( );

Ms.prototype.php= 100;


Данный кусок взят из ActionScript и означает, что свойство php у всех трёх объектов меняется на "80" а потом на "100". Можно ли это перевести на PHP? Существует ли в PHP кака-я либо альтернатива "протиотипам" из Flash?

Первая часть кода в PHP реализуется так:
class Ms{
function Ms(){
$this->php=80
}
}
$http=new Ms();
$inet=new Ms();
$www=new Ms();

А теперь надо у всех трёх объектов поменять свойство php...
 

tony2001

TeaM PHPClub
не надо учить что-то по аналогии с чем-то.
кому и что во флэше нужно - это их проблемы.
PHP - это PHP. не флэш, не С++, не С, не Javascript, не Питон, не Руби.
 

Ms

Новичок
однако знание ActionScript очень помогло мне изучать PHp
 

svetasmirnova

маленький монстрик
Ms
А может стоит изучать работу ООП в PHP не по аналогии с Flash, а по официальному мануалу: [m]oop[/m], [m]oop5[/m]
 

berkut

Новичок
php 5 power proramming:
PHP:
interface Observer {
    function notify($obj);
}
class ExchangeRate {
    static private $instance = null;
    private $observers = array();
    private $exchange_rate;
    private function ExchangeRate()
    {
    }
    public function setExchangeRate($new_rate) {            $this->$exchange_rate = $new_rate;        $this->notifyObservers();    }
    static public function getInstance()
    {
        if (self::$instance == null) {
            self::$instance = new ExchangeRate();
        }
        return self::$instance;
    }
    public function registerObserver($obj)
    {
        $this->observers[] = $obj;
    }
    function notifyObservers()
    {
        foreach($this->observers as $obj) {
            $obj->notify($this);
        }
    }
}

class ProductItem implements Observer {
    public function __construct()
    {
        ExchangeRate::getInstance()->registerObserver($this);
    }
    public function notify($obj)
    {
        if ($obj instanceof ExchangeRate) { // Update exchange rate data
            print "Received update!\n";
        }
    }
}

$product1 = new ProductItem();
$product2 = new ProductItem();

ExchangeRate::getInstance()->setExchangeRate(4.5);
 

svetasmirnova

маленький монстрик
>А теперь надо у всех трёх объектов поменять свойство php...
Йопт! А так не пойдёт:
PHP:
class Ms{
static public $php;
function Ms(){
self::$php=80
}
}
$http=new Ms();
$inet=new Ms();
$www=new Ms();
Ms::$php = 'new value';
 

Nimous

Guest
Но это - только в "пятке".
А так - придётся плодить синглтоны
 

svetasmirnova

маленький монстрик
Nimous
Почему только в "пятке"? В PEAR.php есть реализация статического члена класса. В 3 строчки, кажется.
 

die_hard

Новичок
Автор оригинала: svetasmirnova
Nimous
Почему только в "пятке"? В PEAR.php есть реализация статического члена класса. В 3 строчки, кажется.
чета не охота рыться - будьте так любезны приведите код пожалуйста.
 

svetasmirnova

маленький монстрик
die_hard
>чета не охота рыться - будьте так любезны приведите код пожалуйста.
А ключ Вам от квартиры не дать, где деньги лежат?
 

die_hard

Новичок
/**
* If you have a class that's mostly/entirely static, and you need static
* properties, you can use this method to simulate them. Eg. in your method(s)
* do this: $myVar = &PEAR::getStaticProperty('myVar');
* You MUST use a reference, or they will not persist!
*
* @access public
* @param string $class The calling classname, to prevent clashes
* @param string $var The variable to retrieve.
* @return mixed A reference to the variable. If not set it will be
* auto initialised to NULL.
*/
function &getStaticProperty($class, $var)
{
static $properties;
return $properties[$class][$var];
}
Эта чтоли.
 
Сверху