over erven class

Status
Niet open voor verdere reacties.

migthy84

Gebruiker
Lid geworden
13 okt 2009
Berichten
580
Situatie. Je hebt een class geschreven waar je niet meer in wilt zitten omdat deze niet meer met de update mee kunnen. Daar schrijf je een 2e classe tegen aan met de zelfde functie bevat en nog veel meer functie die in class 1 niet te vinden zijn

de 2e class extends ook class 1

is het mogelijk om nu een derde classe te geschrijven die de zelfde function gebruikt als 1. Dus die de function uit class totaal negeert
 
Als class 2 class 1 extend waarom heb je in class 2 dan dezelfde functie zitten als in class 1?

PHP:
class Een {
  public function foo() {
    return 'foo';
  }
}

class Twee extends Een {
  public function bar() {
    return 'bar';
  }
}

$class = new Twee();
echo $class->foo() .'<br />';
echo $class->bar();
Zou volgens mij als resultaat dit geven:
Code:
foo
bar

de functie bar() bestaat alleen in class Twee dus dit zal niet gaan werken:
PHP:
$class = new Een();
echo $class->foo() .'<br />';
echo $class->bar();
 
enkelvoudig over erven gaat , zodat de function in 1 niet voorkomt bij 2.

Het probleem is echter ik wil een generieke klas maken die alleen deze ene function opnieuw gebruikt. Zowel bij overschrijven als __constructor geeft class 1 een fout melding. class 1 intenceert verkeerd en laat dan bepaalde functies niet in.

Het probleem is dat in class 2 de function inherent is(dus gelijk de parameter mee geeft). zoals in de code hieronder

class 3 moet aan class 2 een variable mee geven om de inherent functie van class 2 te overschrijven zodat class 2 van te voren de gegeven op haalt
 
Kun je dit in code duidelijk maken?

Op dit moment is de bedoeling redelijk wazig.
 
Hoofdclasse : bestaat uit verschillende functies
Code:
class 1{

function take()
{
 // inherent
}

function image()
{
 ----code----
}
etc ... nog veel meer functies

}

Subklassen (het liefst wil in deze klasse alle extra vaardigheden plaatsen ,zodat ze centraal aangesproken worden en ik geen wijzigingen in de class 1 hoeft aan te brengen
Code:
class 2 extends class 1
{

    function take() 
   {
    $waarde = '''1.jpg'';
    $this->image($waarde)
    }
}

de verwerkings class
Code:
require_once(class2);
class 3 extends class dbclass
{
  cl = new class2 ()

}
  1. Wanneer class 2 een __constructor bevat gaat class 1 fouten geven.
  2. Als ik het vanuit class 3 direct de functie probeert te schrijven geeft het problemen.
  3. Het liefst wil ik class 2 er inlaten zitten, deze class bevat enkele bewerking met class 1 die wel goed aangesproken kunnen worden zonder problemen.

Het probleem is dat ik met class 3 een object mee wil geven aan class2 zodat de class 1 dit kan verwerken, alleen in class 1 is de functie (take) inherent.

Om het probleem nog complexer te maken. Class 3 dient eerst de waarde uit de database te halen voordat het aan class 2 meegegeven kan worden.
 
Waarom niet zo:
PHP:
class Een {
  public function image($string) {
    // iets uitvoeren
  }
}

class Twee extends Een {
  public function __construct() {
    parent::__construct(); // Niet zeker of dit nodig is
    $iets = $this->image('1.jpg');
  }
}

class Drie extends DBclass {
  public function __construct() {
    $cl = new Twee();
  }
}
inherent houdt in dat hij dezelfde functies overneemt uit de parent class.
Jij schrijft in class Twee opnieuw de functie "take()", dat kan dus niet.

Dat kan alleen als het een abstracte functie is en jij die in klasse Twee implement.

Wellicht kun je het eenvoudiger maken door parameters aan __construct() mee te geven?
 
Laatst bewerkt:
Ook wanneer ik alle de code in de constructor neer zet , blijft de fout helaas.

Echter wanneer ik de constructor overschrijft doet hij het wel, verder heb ik alles in de values gezet -> this->$image om het probleem op te lossen.

Een hele ander vraag waar mee je misschien kan helpen

wat is ? : tekens bedoel
 
PHP:
$count = ($test == 'test') ? 1 : 0;
Is hetzelfde als
PHP:
if($test == 'test') {
  $count = 1;
} else {
  $count = 0;
}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan