Ich möchte eine zustandslose Klasse entwerfen, die dieselbe Instanz an mehreren Stellen der Anwendung ohne Nebeneffekt wiederverwendet. Dies ist erforderlich, da viele Container für Abhängigkeitsinjektionen immer die gleiche Instanz der Klasse zurückgeben.PHP - Entwerfen einer zustandslosen Klasse
Nehmen wir an, wir haben die DirectoryUtils
Klasse:
<?php
class DirectoryUtils{
private $dir;
public function __constructor($dir){
if($this->checkDirectory($dir)){
$this->dir = $dir;
}else{
throw new Exception("Invalid Directory");
}
}
public function deleteAllFiles(){
// code to delete all files in $this->dir;
}
public function renameDirectory($newName){
// code to rename $this->dir name to $newName
}
private function checkDirectory($dir){
// check if directory exists, is writable...
}
}
Eine einzige Instanz dieser Klasse ist unbequem wiederzuverwenden. Wie man es staatenlos macht?
StateLess == Keine Ahnung, was vorher passiert ist. – RiggsFolly
10 * Dies ist notwendig, weil viele Dependency-Injection-Container immer dieselbe Instanz der Klasse * zurückgeben - viele davon erlauben es Ihnen auch, dies zu umgehen. Welche hast du probiert? – iainn
@ainn PHP-DI wird den Prototypbereich in der nächsten Hauptversion entfernen. – Bob