<?php 
/** 
 * Copyright 2011 Devis Lucato <http://lucato.it> 
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * you may not use this file except in compliance with the License. 
 * You may obtain a copy of the License at 
 * 
 *     http://www.apache.org/licenses/LICENSE-2.0 
 * 
 * Unless required by applicable law or agreed to in writing, software 
 * distributed under the License is distributed on an "AS IS" BASIS, 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 * See the License for the specific language governing permissions and 
 * limitations under the License. 
 */ 
 
/** 
 * Service locator interface 
 */ 
interface iSelect 
{ 
    /** 
     * Set a new class name space 
     * 
     * @param string $namespace Namespace 
     */ 
    static public function setNamespace($namespace); 
     
    /** 
     * Restore the initial class name space 
     */ 
    static public function resetNamespace(); 
     
    /** 
     * Replace an original class with a new one 
     * 
     * @param string $classNoNS   Original name, withouth namespace, 
     *                            ie "Mail_Transport_Uploader" 
     *                            instead of "Zend_Mail_Transport_Uploader" 
     * @param string $replacement New class name, complete of namespace, 
     *                            ie "SomeApp_SomeClass" 
     */ 
    static public function replaceClass($classNoNS, $replacement); 
     
    /** 
     * Get class name 
     * 
     * @param string $classNoNS Original name, without namespace 
     * 
     * @return string class 
     */ 
    static public function getClass($classNoNS); 
     
    /** 
     * Restore original name for a class 
     * 
     * @param string $classNoNS Original name, without namespace 
     */ 
    static public function resetClass($classNoNS); 
     
    /** 
     * Remove all class replacements 
     */ 
    static public function resetClasses(); 
     
    /** 
     * Remove all stored dependencies 
     */ 
    static public function resetDependencies(); 
     
    /** 
     * Restore the class to initial status 
     */ 
    static public function reset(); 
     
    /** 
     * Return a new object instance of the class 
     * 
     * @param string $classNoNS Name of the class, without namespace 
     * 
     * @return <$classNoNS> New instance 
     */ 
    static public function create($classNoNS); 
     
    /** 
     * Magic getter/setter, allows getMailer/setMailer/setLogger/getLogger etc. 
     * 
     * Should respond to: 
     *         def<Dependency name> 
     *         ini<Dependency name> 
     *         set<Dependency name> 
     *         get<Dependency name> 
     * 
     * @param string $name 
     * @param array  $arguments 
     * 
     * @return mixed 
     */ 
    static public function __callStatic($methodname, $arguments); 
}
 
 |