ugrás a tartalomhoz

Archívum - Jan 13, 2012

PHP baráti osztályok vagy ilyesmi

kemmma · 2012. Jan. 13. (P), 15.20
Sziasztok, az a baj, hogy pontosan nem is tudom, hogy mit szeretnék, emiatt a Google egyelőre nem barátom... :(

Adott egy nagy osztály, benne több private tagfüggvénnyel. Egy átalakítás során viszont ezt szét kellene szedni több osztállyá. A bővíthetőség miatt néhány funkciót le kell választani. (az átalakítás után azt szeretném, hogy egyes funkciókat a Stratégia tervezési minta alapján külön osztályok felügyeljék)

A problémám, az új osztályok ne legyenek az eredeti osztály gyermekei, de néhány private függvényre mégis szükség lenne. Jelenleg ezt csak úgy tudtam orvosolni, hogy minden 1. átadom az eredeti objektumot, ez mondjuk nem is baj, 2. az összes private-ből public-ot csináltam, na ez nem tetszik.

class MyClass {
	public function __construct () {
		$a = new StrategyA($this);
		$a->foo();
	}
	private function foo () {
		return 'foo';
	}
}
class StrategyA {
	private $owner;
	public function __construct(MyClass $owner) {
		$this->owner = $owner;
	}
	public function foo () {
		echo $this->owner->foo();
	}
}
new MyClass();
Java-ban van valami olyasmi, hogy egyik osztályban hozom létre a másik osztályt és akkor ott a privát változókat elérem, C++-ben van valami baráti osztály, PHP-ben van valami ilyesmi?

Remélem nem nagyon kusza amit írtam. Merre induljak el keresgélni?