Expection handling

PartizaneN

I speak PHP
Автор оригинала: korchasa
Прикольное извращение. А то, что у вас уже два класса знают об интерфейсе SingleParcel это ничего? И то, что сетите вы массив, а забираете объект, и соответственно, мне придется смотреть код кэшэра, чтобы понять что там происходит.

ЗЫ: На вашем месте я бы не парился и сделал у SingleParcel метод getHash(), по которому бы set'ил и get'ил бы в какой-то общий кэш-объект.
SingleParcel - не SingleParcel - это не имеет значения, считай что это просто параметр и дальше к ниму просто прибавится из debug_backtrace()... (У SingleParcel есть getUniqId() - который отвечает за то, был ли изменён этот самый парсел)...

А $cache->set() - просто возвращает то что ему было передано...

Angerslave, неплохо... Но слишком много раз будет передаваться/искаться $cache_key. В этом плане у Black Raven по-лучше метод, но в плане логики - лучше у тебя.
 

korchasa

LIMB infected
Автор оригинала: PartizaneN
SingleParcel - не SingleParcel - это не имеет значения, считай что это просто параметр и дальше к ниму просто прибавится из debug_backtrace()...
Не забудь объяснить это каждому, кто будет смотреть код - прямо наверху комментарием "не обращайте внимания, это просто параметр"

Автор оригинала: PartizaneN
(У SingleParcel есть getUniqId() - который отвечает за то, был ли изменён этот самый парсел)...
Про это тоже - ой, забыл написать, что "просто параметр" должен иметь метод getUniqId()"

Автор оригинала: PartizaneN
А $cache->set() - просто возвращает то что ему было передано...
И про это - тут я думаю set вернет, то что в него отдали( ура! С написал на одну строчку меньше!)

ЗЫ: Сколько раз нужно крикнуть "ЧЗН", чтобы понять, что код надо писать для других людей, а не для машин, себя и красоты.
 

PartizaneN

I speak PHP
Автор оригинала: korchasa
Не забудь объяснить это каждому, кто будет смотреть код - прямо наверху комментарием "не обращайте внимания, это просто параметр"


Про это тоже - ой, забыл написать, что "просто параметр" должен иметь метод getUniqId()"


И про это - тут я думаю set вернет, то что в него отдали( ура! С написал на одну строчку меньше!)

ЗЫ: Сколько раз нужно крикнуть "ЧЗН", чтобы понять, что код надо писать для других людей, а не для машин, себя и красоты.
Извини, korchasa :) Хотел сконцентрироваться на главном, без вникания в детали...

Выкладываю код класса Кэша, может поможет тем кто не понял что происходит

PHP:
class CalculatorsCache extends Exception{
	static private $__cache;
	private $__param;
	public function __construct(&$param){
		$this->__param=&$param;
	}
	public static function get($param){
		if($param instanceof SingleParcel){
			$param=$param->getUniqId();
		}
		$trace=debug_backtrace();
		$param.=$trace[1]['class'].$trace[1]['type'].$trace[1]['function'];
		if(isset(self::$__cache[$param])){
			return self::$__cache[$param];
		}else{
			throw new CalculatorsCache(self::$__cache[$param]);
		}
	}
	public function set($value){
		return $this->__param=$value;
	}
}
 

whirlwind

TDD infected, paranoid
PartizaneN я думаю korchasa имел в виду прямо противоположное. Если тем кто не понял, что происходит
в трех строчках кода, нужно прочитать еще 20 строчек кода, то эти первые три строчки кривые.
 
Сверху