note 111117 added to language.oop5.magic

From: Date: Thu, 17 Jan 2013 02:15:26 +0000
Subject: note 111117 added to language.oop5.magic
Groups: php.notes 
Request: Send a blank email to php-notes+get-193119@lists.php.net to get a copy of this message
Extensão do metodo __call uso da class: echo $class("nada")->strlen()->strlen();//1 <?php /* Bom vamos la primeiro para criar esse método em uma class é necessario ter 3 coisas em primeira instancia * metodo magico __call e __invoke, * variavel protected args; */ class prototypeInPHP{ protected $args, $msg_version = 'Team exe functions - Version 3.0 @Developer By If'; public function __invoke(){ #Metodo para receber os valores dos argumentos principais chamando a class com function # $class('lalal'); # #Pega valores passado nos argumentos da função $vars = func_get_args(); #Se possuir apenas 1 indice pode simplicar colocando na var args deixando ela sem ser array if(count($vars)==1){ $this->args = $vars[0]; }else{ $this->args = $vars; } return $this; } public function __toString(){ # With method only in method call others is forbiden if(!isset($this->args)) return (string)$this->msg_version; #Get Values of methdo call $q=''; #<If array> if(is_array($this->args)) foreach($this->args as $arg) $q.= $arg.'<br />'; #</If array> else $q = $this->args; return (string)$q ;} public function __clone(){ return (isset($this->args) && (!is_array($this->args) || count($this->args<>0)))? $this->args:clone $this; } public function get_result(){ return $this->args ;} public function __call($function, $args_function){ //Não executa pois não existe valor em args para executar o modo compilado if(!isset($this->args)) return false; //Funções de escape é utilizado pois existem funções onde elemento principal deve constar no ultimo indice // str_replace,preg_replace... switch($function){ case 'str_replace': if(is_array($this->args)){ //Backup pega os valores dos argumentos da função para não alterar a varivel foreach($this->args as $key=>$arg){ $backup = $args_function; //Adiciona arg no ultimo elemento de $backup para satisfazer a condição //str_replace(oque_quer_Achar,como_vai_substituir, arg); $backup[] = $arg; //Chama a função $this->args[$key] = call_user_func_array($function,$backup); } }else{ //Não tem problema adicionar em arg_function, pois nao tem loop $args_function[] = $arg; //Chama a função $this->args[$key] = call_user_func_array($function,$backup); } //Para pode chamar outro comando return $this; break; } //escape finish... if(is_array($this->args)){ foreach($this->args as $key=>$arg){ $backup = $args_function; #Adiciona valor no primeiro indice da array array_unshift($backup,$arg) #Chama função e retorna valor ;$this->args[$key] = call_user_func_array($function,$backup); } }else{ #Adiciona valor no primeiro indice da array array_unshift($args_function,$this->args) #Chama função e retorna valor ;$this->args = call_user_func_array($function,$args_function) ;} return $this; } } ?> $new = new prototypeInPHP; echo $new("Team Exe")->strlen();//8 echo $new->strlen();//1 ---- Server IP: 69.147.83.199 Probable Submitter: 189.46.70.118 ---- Manual Page -- http://php.net/manual/en/language.oop5.magic.php Edit -- https://master.php.net/note/edit/111117 Del: integrated -- https://master.php.net/note/delete/111117/integrated Del: useless -- https://master.php.net/note/delete/111117/useless Del: bad code -- https://master.php.net/note/delete/111117/bad+code Del: spam -- https://master.php.net/note/delete/111117/spam Del: non-english -- https://master.php.net/note/delete/111117/non-english Del: in docs -- https://master.php.net/note/delete/111117/in+docs Del: other reasons-- https://master.php.net/note/delete/111117 Reject -- https://master.php.net/note/reject/111117 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#193119) next »