<?php 
/** 
 * Copyright  (c) 2015, Till Wehowski 
 * All rights reserved. 
 *  
 * Redistribution and use in source and binary forms, with or without 
 * modification, are permitted provided that the following conditions are met: 
 * 1. Redistributions of source code must retain the above copyright 
 *    notice, this list of conditions and the following disclaimer. 
 * 2. Redistributions in binary form must reproduce the above copyright 
 *    notice, this list of conditions and the following disclaimer in the 
 *    documentation and/or other materials provided with the distribution. 
 * 3. Neither the name of frdl/webfan nor the 
 *    names of its contributors may be used to endorse or promote products 
 *    derived from this software without specific prior written permission. 
 *  
 * THIS SOFTWARE IS PROVIDED BY frdl/webfan ''AS IS'' AND ANY 
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
 * DISCLAIMED. IN NO EVENT SHALL frdl/webfan BE LIABLE FOR ANY 
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
 *  
 */ 
namespace frdl\ApplicationComposer\Repos; 
 
 
abstract class Package extends PackageFetcher 
{ 
     
   protected $_data = null; 
 
   function __construct(){ 
         $this->_data = &$this->data(); 
   } 
 
   public function __call($name, $args){ 
        if('data' === $name){ 
            if(0 === count($args)){ 
                  return $this->_data(); 
            }elseif(1 === count($args)){ 
                  return $this->_data($args[0]); 
            } 
        }     
         
         
   } 
    
   /** 
   *   @param   $data [\frdl\o]  OPTIONAL 
   *   @returns \frdl\o  
     e.g 1: { 
            "type": "package", 
            "package": { 
                "name": "TerraProject/pragmamx", 
                "version": "2.2.2", 
                "source": { 
                    "url": "http://download.pragmamx.org/pmx/pragmaMx_2.2_2015-04-01--18-33_full.zip", 
                    "type": "zip" 
                } 
            } 
        }, 
      #   
      e.g.2:  { 
            "type": "package", 
            "package": { 
                "name": "composer/composer", 
                "version": "1.0.0-alpha10", 
                "source": { 
                    "url": "https://github.com/composer/composer/archive/1.0.0-alpha10.zip", 
                    "type": "zip" 
                } 
            } 
        } 
   
   */ 
   abstract protected function _data(\frdl\o $data = null); 
      
   public function info(){ 
        
   } 
    
   public function all(){ 
        
   } 
    
   public function search($query){ 
        
   } 
    
   public function package($vendor, $packagename){ 
        
   }   
     
}
 
 |