php5 ana sınıfını genişletmek ve statiği kullanın

2 Cevap php

Ben böyle yapamam neden?

<?php 
class core {
    public static $db;


    function __construct() {
        $this->db = new mysql('host', 'user', 'pw', 'db');
    }
}

class stat extends core {
    public static function log() {
        core::$db->query("insert into mytable values(now())");
    }
}

// do something
stat::log(); 
?>

2 Cevap

Eğer $ db içine bir şey atamayız çünkü, sizin kod görünüyor tarafından. Eğer sınıfının bir örneğini oluşturduğunuzda yapıcı değil sadece statik ile denir.

Ayrıca, neden kod bile çekirdek uzanan? Statik yöntemler / değişkenleri kullanmak kadar uzatmak gerekmez. Belki de aslında o bir örnek özelliği yapmak için daha mantıklı ve yerine statik yeni bir örneğini kullanmak istiyorsunuz?

Çekirdek :: __construct (Eğer new core veya new stat çağırdığınızda) yöntemi, yalnızca bir nesnenin oluşturulmasını çağırarak, denir. Sen stat::log(), böylece çekirdek :: $ db başlatıldı olmamıştı gidebilirsiniz.