2013-01-11 18 views
5

Podążyłem za tym linkiem już przed pytaniem - Answer is in JAVA context i to dla constructor in PHP.Jaki jest pożytek z konstruktora w klasie abstrakcyjnej w php

Odkąd jestem starterem, moja implementacja mojego kodu PHP w koncepcjach OOP, tak naprawdę jestem gotów wiedzieć o użyciu i zaletach lub kiedy używać konstruktora w klasie abstrakcji PHP.

Proszę podać przykład w kontekście rzeczywistym, aby lepiej wykorzystać tę koncepcję.

PS - Chociaż śledzę PHP Manuals, aby zrozumieć pojęcia OOP, ale uważam, że jest to trochę trudne do zrozumienia, każda pomoc związana z linkami/blogami do śledzenia jest naprawdę odczuwalna.

mojego kodu -

<?php 

abstract class grandClass 
{ 
    abstract function grandmethod(); 

    function __construct() 
    { 
     echo "I am grandClass constructor"; 
    } 
} 

abstract class parentClass extends grandClass 
{ 
    abstract function raiseFlag(); 

    function grandmethod() 
    { 
     echo "This is grandmethod!!!","<br />"; 
    } 

    public function getValue() 
    { 
     echo "Zero is the blackhole for the numbers!!","<br />"; 
    } 
} 

class childClass extends parentClass 
{ 

    function raiseFlag() 
    { 
     echo "Peaceful thoughts!!","<br />"; 
    } 

} 

$myobj = new childClass(); 
$myobj->raiseFlag(); 
$myobj->getValue(); 
$myobj->grandmethod(); 

Odpowiedz

27

Konstruktor w abstrakcyjnej klasie jest taki sam jak w konkretnej klasie. Użyj konstruktorów, gdy są one potrzebne, na przykład, jeśli musisz zainicjować niektóre dane lub przypisać pewne zasoby.

Dam wam przykład:

abstract class Db 
{ 
    protected $pdo; 

    public function __construct($pdo) 
    { 
     $this->pdo = $pdo; 
    } 

    abstract function select($table, $fields); 
} 

class Db_Mysql extends Db 
{ 
    public function select($table, $fields) 
    { 
     // Build MySQL specific select query 
     // then execute it with $this->pdo 
    } 
} 

class Db_Pgsql extends Db 
{ 
    public function select($table, $fields) 
    { 
     // Build PostgreSQL specific select query 
     // then execute it with $this->pdo 
    } 
} 

// Usage: 
$db = new Db_Mysql($pdo); 

$db->select('users', array('id', 'name')); 
+0

można proszę dodać więcej tekstu do właściwego zrozumienia, chociaż poprosiłem o wykorzystaniu konstruktora klasy abstrakcyjnej ... kiedy RTO wykorzystania i kiedy nie. . + 1 dla kodu :) – swapnesh

+0

Wyświetl moją zaktualizowaną odpowiedź, a także zmodyfikowany kod dla lepszego zrozumienia. – Lauris

Powiązane problemy