nginxsonarrradarrplexorganizrdashboardbookmarkapplication-dashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbget
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							79 lines
						
					
					
						
							2.2 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							79 lines
						
					
					
						
							2.2 KiB
						
					
					
				| <?php | |
| 
 | |
| /* | |
|  * This file is part of the Symfony package. | |
|  * | |
|  * (c) Fabien Potencier <fabien@symfony.com> | |
|  * | |
|  * For the full copyright and license information, please view the LICENSE | |
|  * file that was distributed with this source code. | |
|  */ | |
| 
 | |
| namespace Symfony\Component\VarDumper\Caster; | |
| 
 | |
| use Symfony\Component\VarDumper\Cloner\Stub; | |
| 
 | |
| /** | |
|  * @author Jan Schädlich <jan.schaedlich@sensiolabs.de> | |
|  */ | |
| class MemcachedCaster | |
| { | |
|     private static $optionConstants; | |
|     private static $defaultOptions; | |
| 
 | |
|     public static function castMemcached(\Memcached $c, array $a, Stub $stub, $isNested) | |
|     { | |
|         $a += [ | |
|             Caster::PREFIX_VIRTUAL.'servers' => $c->getServerList(), | |
|             Caster::PREFIX_VIRTUAL.'options' => new EnumStub( | |
|                 self::getNonDefaultOptions($c) | |
|             ), | |
|         ]; | |
| 
 | |
|         return $a; | |
|     } | |
| 
 | |
|     private static function getNonDefaultOptions(\Memcached $c) | |
|     { | |
|         self::$defaultOptions = self::$defaultOptions ?? self::discoverDefaultOptions(); | |
|         self::$optionConstants = self::$optionConstants ?? self::getOptionConstants(); | |
| 
 | |
|         $nonDefaultOptions = []; | |
|         foreach (self::$optionConstants as $constantKey => $value) { | |
|             if (self::$defaultOptions[$constantKey] !== $option = $c->getOption($value)) { | |
|                 $nonDefaultOptions[$constantKey] = $option; | |
|             } | |
|         } | |
| 
 | |
|         return $nonDefaultOptions; | |
|     } | |
| 
 | |
|     private static function discoverDefaultOptions() | |
|     { | |
|         $defaultMemcached = new \Memcached(); | |
|         $defaultMemcached->addServer('127.0.0.1', 11211); | |
| 
 | |
|         $defaultOptions = []; | |
|         self::$optionConstants = self::$optionConstants ?? self::getOptionConstants(); | |
| 
 | |
|         foreach (self::$optionConstants as $constantKey => $value) { | |
|             $defaultOptions[$constantKey] = $defaultMemcached->getOption($value); | |
|         } | |
| 
 | |
|         return $defaultOptions; | |
|     } | |
| 
 | |
|     private static function getOptionConstants() | |
|     { | |
|         $reflectedMemcached = new \ReflectionClass(\Memcached::class); | |
| 
 | |
|         $optionConstants = []; | |
|         foreach ($reflectedMemcached->getConstants() as $constantKey => $value) { | |
|             if (0 === strpos($constantKey, 'OPT_')) { | |
|                 $optionConstants[$constantKey] = $value; | |
|             } | |
|         } | |
| 
 | |
|         return $optionConstants; | |
|     } | |
| }
 | |
| 
 |