/**
* Created by PHPS.
* User: MADR
* Date: 07/10/2018
* Time: 11:24
*/
class FindshowController {
   /**
    * Path file per la ricerca
    * @var string
    */
   private $target='';
   /**
    * File da escludere
    * @var string
    */
   private $exl='';
   /**
    * Array contenente i percorsi statici dei file
    * @var array
    */
   private $static_searching=[];
   /**
    * Non utilizzata, servirebbe per il pagining
    * @var int
    */
   private $page_result=10;
   /**
    * La stringa viene espolosa e vengono processati tutti gli item
    * @var string
    */
   private $word_explode=' ';
   /**
    * Ritorno array associativo parloa cercata corrispondenza file
    * @var array
    */
   public $results=[];
   /**
    * Array appoggio
    * @var array
    */
   private $temp_local=[];
   /**
    * Array appoggio con contenuto file
    * @var array
    */
   private $temp_store=[];
   public function __construct($options=[]) {
      (!empty($options))?$this->set_all($options):null;
      return $this;
   }
   public function __init_($word){
      $this->start_searching();
      $unique=[];
      (!is_array($word))?$word_ar=explode($this->word_explode,$word):$word_ar=$word;
      foreach ($this->temp_local as $items){
         //salvo in temp store tutti gli item per evitare di effettuare l'operazione n volte quante le iterazioni
         if(!isset($this->temp_store[$items]))$this->temp_store[$items]=file_get_contents($items);
         $local=$this->temp_store[$items];
         if($items!=$this->exl){
            foreach ($word_ar as $k=>$words){
               if(!empty(trim($words))){
                  if(strstr(strtolower($local),trim(strtolower($words)))){
                     if(!in_array($items,$unique)){
                        $this->results[trim(strtolower($words))][]=$items;
                     }
                  }
               }
            }
         }
      }
      return $this;
   }
   private function set_all($option){
      foreach ($option as $k=>$v){
         (property_exists($this,$k))?$this->$k=$v:null;
      }
   }
   public function start_searching(){
      ($this->target!='')?$this->load_path():$this->temp_local=$this->static_searching;
   }
   private function load_path(){
      $a=scandir($this->target);
      foreach ($a as $items){
         if($items!='.' && $items!='..' && !is_dir($this->target.'/'.$items))$this->temp_local[]=$this->target.'\\'.$items;
      }
      $this->temp_local=array_unique(array_merge($this->temp_local,$this->static_searching));
   }
}
//la puoi richiamare così
$find=new FindshowController(['target'=>__DIR__,'exl'=>__FILE__]);
/*init accetta sua una stringa che array... se stringa vengono valorizzate tutte le parole (anche parziali) per cercarle all'interno
dei file.
*/
print_r($find->__init_(['pluto','paperino','pippo'])->results);