Ahoj potřebuju osvětlit problém s přístupem do cizí třídy k private metodě,
vlastně se to týká vícenásobné dědičnosti, mám hlavní abstraktní třídu ze které dědí ostatní třídy, v této třídě je třeba mtoda pro připojení k DataBázi apod. pokud nějaký kontroler potřebuje připojení tak si z abstraktní třídy podědí a jeto jenže ten kontroler potřebuje zároveň dědit z kontroleru ve kterém jsou metody zajišťující bezpečnost aplikace např. generování tokenů pro heslo nebo pro formuláře - vícenásobná dedičnost v php není tak jsem to vyřešil tak že jsem vytvořil vstupní metodu public která potom volá metody které jsou private.
i když ne přímo ale asi porušuju zapouzdření
//soubor DefaultController.php
<?php
abstract class DefaultController
{
abstract function process(//blah){//blah;}
//pripojeni k db
protected function dbCon()
{
return $this->objDb = new Db;//pripojeni k db
}
}
//soubor RouterController.php
<?php
final class RouterController extends DefaultController
{
//blah
//blah
public function process(//blah)
{
$objRegistruj = new RegistrujController;
$objRegistruj->process(//blah);
}
//blah
//blah
//blah
}
//soubor RegistrujController.php
<?php
final class RegistrujController extends DefaultController
{
//blah
//blah
// generovani tokenu pro pwd
public function process(//blah)
{
$this->objProtector = new ProtectorController;
$this->token = $this->objProtector->process("tokenizer");
}
}
//soubor ProtectorController.php
<?php
final class ProtectorController extends DefaultController
{
//blah
//blah
public function process($protectorMethodName)
{
return $this->protectorMethod = $this->$protectorMethodName();
}
private function tokenizer()
{
$this->tokenRandNum = mt_rand(1, 1000000).chr(rand(97,122));
}
}
důležitý je přístup z registruj do protector přes metodu process k privatni metode tokenizer.
Sice to funguje ale nevím jestl ito je dobrý přístup a pokud špatný tak jaký je ten dobrý?? předem dík za rady