forked from GNUsocial/gnu-social
		
	
		
			
	
	
		
			101 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			101 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|   | <?php | ||
|  | 
 | ||
|  | // {{{ license
 | ||
|  | 
 | ||
|  | /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker: */ | ||
|  | //
 | ||
|  | // +----------------------------------------------------------------------+
 | ||
|  | // | This library is free software; you can redistribute it and/or modify |
 | ||
|  | // | it under the terms of the GNU Lesser General Public License as       |
 | ||
|  | // | published by the Free Software Foundation; either version 2.1 of the |
 | ||
|  | // | License, or (at your option) any later version.                      |
 | ||
|  | // |                                                                      |
 | ||
|  | // | This library is distributed in the hope that it will be useful, but  |
 | ||
|  | // | WITHOUT ANY WARRANTY; without even the implied warranty of           |
 | ||
|  | // | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU    |
 | ||
|  | // | Lesser General Public License for more details.                      |
 | ||
|  | // |                                                                      |
 | ||
|  | // | You should have received a copy of the GNU Lesser General Public     |
 | ||
|  | // | License along with this library; if not, write to the Free Software  |
 | ||
|  | // | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 |
 | ||
|  | // | USA.                                                                 |
 | ||
|  | // +----------------------------------------------------------------------+
 | ||
|  | //
 | ||
|  | 
 | ||
|  | // }}}
 | ||
|  | 
 | ||
|  | 
 | ||
|  | /** | ||
|  |  * Encode/decode Internationalized Domain Names. | ||
|  |  * Factory class to get correct implementation either for php4 or php5. | ||
|  |  * | ||
|  |  * @author  Markus Nix <mnix@docuverse.de> | ||
|  |  * @author  Matthias Sommerfeld <mso@phlylabs.de> | ||
|  |  * @package Net | ||
|  |  * @version $Id: IDNA.php 284681 2009-07-24 04:24:27Z clockwerx $ | ||
|  |  */ | ||
|  | 
 | ||
|  | class Net_IDNA | ||
|  | { | ||
|  |     // {{{ factory
 | ||
|  |     /** | ||
|  |      * Attempts to return a concrete IDNA instance for either php4 or php5. | ||
|  |      * | ||
|  |      * @param  array  $params   Set of paramaters | ||
|  |      * @return object IDNA      The newly created concrete Log instance, or an | ||
|  |      *                          false on an error. | ||
|  |      * @access public | ||
|  |      */ | ||
|  |     function getInstance($params = array()) | ||
|  |     { | ||
|  |         $version   = explode( '.', phpversion() ); | ||
|  |         $handler   = ((int)$version[0] > 4) ? 'php5' : 'php4'; | ||
|  |         $class     = 'Net_IDNA_' . $handler; | ||
|  |         $classfile = 'Net/IDNA/' . $handler . '.php'; | ||
|  | 
 | ||
|  |         /* | ||
|  |          * Attempt to include our version of the named class, but don't treat | ||
|  |          * a failure as fatal.  The caller may have already included their own | ||
|  |          * version of the named class. | ||
|  |          */ | ||
|  |         @include_once $classfile; | ||
|  | 
 | ||
|  |         /* If the class exists, return a new instance of it. */ | ||
|  |         if (class_exists($class)) { | ||
|  |             return new $class($params); | ||
|  |         } | ||
|  | 
 | ||
|  |         return false; | ||
|  |     } | ||
|  |     // }}}
 | ||
|  | 
 | ||
|  |     // {{{ singleton
 | ||
|  |     /** | ||
|  |      * Attempts to return a concrete IDNA instance for either php4 or php5, | ||
|  |      * only creating a new instance if no IDNA instance with the same | ||
|  |      * parameters currently exists. | ||
|  |      * | ||
|  |      * @param  array  $params   Set of paramaters | ||
|  |      * @return object IDNA      The newly created concrete Log instance, or an | ||
|  |      *                          false on an error. | ||
|  |      * @access public | ||
|  |      */ | ||
|  |     function singleton($params = array()) | ||
|  |     { | ||
|  |         static $instances; | ||
|  |         if (!isset($instances)) { | ||
|  |             $instances = array(); | ||
|  |         } | ||
|  | 
 | ||
|  |         $signature = serialize($params); | ||
|  |         if (!isset($instances[$signature])) { | ||
|  |             $instances[$signature] = Net_IDNA::getInstance($params); | ||
|  |         } | ||
|  | 
 | ||
|  |         return $instances[$signature]; | ||
|  |     } | ||
|  |     // }}}
 | ||
|  | } | ||
|  | 
 | ||
|  | ?>
 |