Pogledajte određenu poruku
Staro 04. 03. 2013.   #16
webarto
expert
Grand Master
 
Avatar webarto
 
Datum učlanjenja: 11.04.2010
Poruke: 998
Hvala: 141
959 "Hvala" u 153 poruka
webarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished road
Default

@jablan
Kôd:
namespace Dpt;

abstract class Database
{
  protected $link;
  abstract public function query(string $query);
}

class Mysql extends Database
{
  public function query(string $query)
  {
    return mysql_query($query, $this->link);
  }
}

class Pdo extends Database
{
  public function query(string $query)
  {
    return $this->link->query($query);
  }
}
Kako misliš...

a.) zabraniti instanciranje?
b.) forsirati implementiranje metoda?

Kôd:
namespace Dpt;

class Database
{
  public function __construct()
  {
    trigger_error('Not allowed', E_USER_ERROR); 
  }
}

class Mysql extends Database
{
  public function __construct()
  {
    
  }
  
  function query()
  {
    var_dump(func_get_args());
  }
}

(new \Dpt\Mysql)->query('Hello');
Apstraktna klasa je klasa + interface, koja se uz to ne može instancirati, ima svoju svrhu, ali mislim da se mnogo puta koristi u pogrešne svrhe.

Tvoj mi primjer nije jasan, jesi li mislio na ovo:

Kôd:
function QuackAndFly(Duck $obj){$obj->quack(); $obj->fly();}
Možeš ti u recimo PHP da uradiš sve, ali ne mora da znači da trebaš, nije ni Java sjajan primjer.
__________________
Github // LinkedIn // PHP // ZCE // Stackoverflow PHP // Site5 Web Hosting

Poslednja izmena od webarto : 04. 03. 2013. u 01:37.
webarto je offline   Odgovorite uz citat