Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Salve pessoal ..
tenho a seguinte saida..
object(LogsRegister_Exc)[5]
protected 'adapter' =>
object(controller_combo)[2]
public 'ct' =>
array
1 => string 'PHP' (length=3)
2 => string 'Javascript' (length=10)
3 => string 'Frameworks' (length=10)
4 => string 'SEO' (length=3)
5 => string 'AJAX' (length=4)
6 => string 'CMS' (length=3)
protected 'method' => string 'combo' (length=5) // quero pegar o nome desse medoto para uma comparação
essa zebra executa o metodo combo() e grava no Log.. So q queria registrar somente os insert e updates e tals... No log o REQUESTS de leitura não m intereção serem registrados..
Tenho um objeto instanciando outro Objeto q por sua vez tem o metodo combo()
public static function setLogger(LogsRegister_Command $method) {
// $modelReflector = new ReflectionClass($method); minha tentativa foi essa e me retorna erro
// $method = $modelReflector->getMethod($modelReflector);
switch ( $method ) {
case 'insert':
return $this->log($method);
break;
case 'update':
return $this->log($method);
break;
case 'delete':
return $this->log($method);
break;
default :
var_dump( $method );
}
}
sera q tem alguma forma com Reflection de faze isso?
ou pega esse objeto tranforma em array e filtra dela a String? =X
agradeço desde já a Ajuda..
=X
Resolvido..
o reflection dava um erro cabeludo... U.u
mais fiz assim e resolvi ..
$array = (array) $method;
switch (array_pop($array)) { ....
vlw a força
>
essa zebra executa o metodo combo() e grava no Log.. So q queria registrar somente os insert e updates e tals... No log o REQUESTS de leitura não m intereção serem registrados..
Hummmm, estou sentindo um mau cheiro no seu código. Você mostrou apenas um dump do objeto, tem como você dar mais detalhes sobre o problema que quer resolver e mostrar o código na íntegra?
Agora que eu li com mais calma, que entendi o porquê de não ter funcionado.
O construtor de ReflectionClass recebe, seja como string, seja como objeto, a classe que será refletida. Pela menos pela nomenclatura do seu código, você informou o método.
E quando você invocou ReflectionClass::getMethod(), você informou o objeto da própria ReflectionClass. E ReflectionClass::getMethod() requer uma string e não um objeto.
Você não deve ter visto erro, ou porque seus alertas estão desativados ou baixo demais, ou por causa do auto cast que converteu o objeto passado para string, invocando, assim, ReflectionClass::__toString().
>
Hummmm, estou sentindo um mau cheiro no seu código. Você mostrou apenas um dump do objeto, tem como você dar mais detalhes sobre o problema que quer resolver e mostrar o código na íntegra?
meu topico de referencia... Bom o codigo e seu kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
Mais a kakinha que fez nele fui eu =X
http://forum.imasters.com.br/topic/452441-dependencias-entre-um-objeto-srp/
So que ainda to aprendendo.. esse lance d desing é dose =X
Fiz uma mudança nele pra se encaixa na minha necessida (obvio que fico meio gambiarra eu acho )=X
Então to usando o Chain Of Responsibility que você sugere no topico .. onde tem o esquema do rollBack (vo implementa no meu codigo gostei muito dakilo ____)
ai fiz assim:
class LogsRegister_CreateCommand extends LogsRegister_Abstract {
public function execute() {
if (method_exists($this->adapter,$this->method )) {
$parameter = null;//não usado
call_user_func(array($this->adapter, $this->method), $parameter);
} else {
throw new ErrorException('Método não existe.');
}
}
}
Originalmente a codigo fazia 1 class pra cada execute().
so que meu codigo pega as Requests assim:
$url = parse_url($_SERVER['REQUEST_URI']); // return array (path, query)
$parameter = isset($_REQUEST['extra_params']) ? $_REQUEST['extra_params'] : null;
parse_str($url['query'], $query);
$classes = array_keys($query);
$method = array_values($query);
$class = 'controller_' . $classes[0];
if ($method[0] == '')
$method[0] = 'index';
$invoker = new LogsRegister_Invoker();
$invoker->excMethods(new LogsRegister_CreateCommand(new $class(), $method[0]));
Bom o registerLogger simplismente executa o medoto e gera o log ai que juntei tudo pra minha aplicação =D
ou seja Todos meus REQUESTS passam pelo 'LogRegister'..
Caso eu queria registra tuda requisição eu tiro as condições e pronto ..
So q o Request de leitura(read) de lista Dados não m intereção serem gravado no arquivo.. (No momento não quero registra eles).
Ai precissava de uma condição onde fosse insert delete update ele gerasse o log..
As modificação que fiz no codigo original me obrigaram a isso..
Mudei a Class LOG assim:
class LogsRegister_Log {
public function log(LogsRegister_Command $command) {
return get_class($command);
}
public static function setLogger(LogsRegister_Command $method) {
$array = (array) $method;
switch (array_pop($array)) {
case 'insert':
self::log($method);
break;
case 'update':
self::log($method);
break;
case 'delete':
self::log($method);
break;
default :
return;
}
}
}
bom foi ai que fiz o TOPICO eu precisava recupera o nome do Metodo que tinha sido executado..
poderia extende abstract no Log e pega o $this->method =X mais eu num queria extende mais nd kkk.. (se é q isso daria certo)
Bom Bruno eu vi o erro do Reflection por isso vim no forum pedi alguma alternativa..
No mais é isso ^^
Acho que fico bem confuso isso =X mais minha ideia foi cria um execute() mais dinamico sem a necessidade de uma class register_insert() e outra register_update();
(concerteza eu perco alguma coisa com essa modificação mais ainda vo descubri oque vai m custa isso =P)
Agora ta funcionando legal agradeço a atenção de vcs que realmente sempre tão ajudando o pessoal.. qndo pinta mais um problema venho aki enche vcs kkkkk
Mais o codigo num é zebra não, pelo contrario e muito bom ________
a zebra que fez fui eu kkkk..
>
...onde tem o esquema do rollBack (vo implementa no meu codigo gostei muito dakilo ____)
Então é Command, não Chain of Responsibility.
>
Originalmente a codigo fazia 1 class pra cada execute().
...ai que juntei tudo pra minha aplicação =D
Certo, era Strategy e você cometeu um "patterncídio" ao fazer isso. Com Strategy você não precisaria desse switch-case.
Chain of Responsibility. era do Topico da validações né =X
troquei as bola aki..
>
(concerteza eu perco alguma coisa com essa modificação mais ainda vo descubri oque vai m custa isso =P)
Agora já sei oque é. =X
mais vo deixa o Strategy de lado . vo assassina o pattern so dessa vez kkkkkkkkkkkkkkk..
troquei 6 por meia duzia mais ta valendo =P
minha aplicação exigiu isso =P
vlw.. vo continua estudando os desing .. ainda tenho q evolui muito(muito msm...) pra te um conhecimento pleno no assunto.
>
minha aplicação exigiu isso =P
Não acredito nisso, na verdade, acredito que agora, depois dessa mudança, ela deva estar chorando. :P
>
vlw.. vo continua estudando os desing .. ainda tenho q evolui muito(muito msm...) pra te um conhecimento pleno no assunto.
Se quer estudar design em orientação a objetos, talvez o melhor caminho seja começar pelos princípios de design, antes de partir para padrões de design.
hasuhaushuahsuha..
Ela ta chorando não ela ta funcionando que uma beleza kk..
foi o remedio que achei :natalw00t:
principios desing seriam esse padrões GoF ? ( vi aqui no Forum ja li alguns topicos ).
Tem algum artigo topico livro( portugues =X ) que fala disso =)
Grato!!
>
Ela ta chorando não ela ta funcionando que uma beleza kk..
foi o remedio que achei :natalw00t:
Então tá... :nataltongue:
>
principios desing seriam esse padrões GoF ? ( vi aqui no Forum ja li alguns topicos ).
Sem querer ser chato, mas já sendo (na verdade estou querendo ser chato sim porque é divertido)
Já parou para pensar que, se padrões GoF tratasse de princípios, se chamaria princípios GoF?
GoF organizaram um catálogo de padrões de design organizados segundo seus propósitos. :seta: https://www.google.c...s&tbm=bks&tbo=1
>
Tem algum artigo topico livro( portugues =X ) que fala disso =)
Grato!!
Sobre princípios eu não sei dizer, uma ótima referência sobre princípios você vai encontrar ao pesquisar sobre Robert "UncleBob" Martin. Sobre padrões, o GoF possui uma tradução para português.
tinha parado pra pensa não =X (mais que bom que existe os pensadores kkkkkkk)
enfim ninguem nasce sabendo ^^
vo pesquisa sobre isso. Muito Grato pelo ajuda e pela indicação..
vo para de revive esse topico que já morreu kkk
Abraços ...
Resolvido.
Não entendi nada.
Pelo título e a descrição do tópico você estava no caminho certo, seu código comentado também, qual o problema? O que é retornado pela Reflection?