当前位置: 首页>>代码示例>>PHP>>正文


PHP TypeLoader::getMappedClassName方法代码示例

本文整理汇总了PHP中Zend\Amf\Parser\TypeLoader::getMappedClassName方法的典型用法代码示例。如果您正苦于以下问题:PHP TypeLoader::getMappedClassName方法的具体用法?PHP TypeLoader::getMappedClassName怎么用?PHP TypeLoader::getMappedClassName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Zend\Amf\Parser\TypeLoader的用法示例。


在下文中一共展示了TypeLoader::getMappedClassName方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: getClassName

 /**
  * Find if the class name is a class mapped name and return the
  * respective classname if it is.
  *
  * @param object $object
  * @return false|string $className
  */
 protected function getClassName($object)
 {
     //Check to see if the object is a typed object and we need to change
     $className = '';
     switch (true) {
         // the return class mapped name back to actionscript class name.
         case Parser\TypeLoader::getMappedClassName(get_class($object)):
             $className = Parser\TypeLoader::getMappedClassName(get_class($object));
             break;
             // Check to see if the user has defined an explicit Action Script type.
             // Check to see if the user has defined an explicit Action Script type.
         // Check to see if the user has defined an explicit Action Script type.
         // Check to see if the user has defined an explicit Action Script type.
         case isset($object->_explicitType):
             $className = $object->_explicitType;
             break;
             // Check if user has defined a method for accessing the Action Script type
             // Check if user has defined a method for accessing the Action Script type
         // Check if user has defined a method for accessing the Action Script type
         // Check if user has defined a method for accessing the Action Script type
         case method_exists($object, 'getASClassName'):
             $className = $object->getASClassName();
             break;
             // No return class name is set make it a generic object
             // No return class name is set make it a generic object
         // No return class name is set make it a generic object
         // No return class name is set make it a generic object
         case $object instanceof \stdClass:
             $className = '';
             break;
             // By default, use object's class name
             // By default, use object's class name
         // By default, use object's class name
         // By default, use object's class name
         default:
             $className = get_class($object);
             break;
     }
     if (!$className == '') {
         return $className;
     } else {
         return false;
     }
 }
开发者ID:bradley-holt,项目名称:zf2,代码行数:51,代码来源:Serializer.php

示例2: testClassMap

 /**
  * Add a class mapping and lookup the mapping to make sure
  * the mapping succeeds
  */
 public function testClassMap()
 {
     $this->_server->setClassMap('controller.test', 'ZendTest\\Amf\\TestAsset\\Server\\testclass');
     $className = Parser\TypeLoader::getMappedClassName('ZendTest\\Amf\\TestAsset\\Server\\testclass');
     $this->assertEquals('controller.test', $className);
 }
开发者ID:alab1001101,项目名称:zf2,代码行数:10,代码来源:ServerTest.php

示例3: _phpTypeToAS

 /**
  * Map from PHP type name to AS type name
  *
  * @param  string $typename PHP type name
  * @return string AS type name
  */
 protected function _phpTypeToAS($typename)
 {
     if (class_exists($typename)) {
         $vars = get_class_vars($typename);
         if (isset($vars['_explicitType'])) {
             return $vars['_explicitType'];
         }
     }
     if (false !== ($asname = \Zend\Amf\Parser\TypeLoader::getMappedClassName($typename))) {
         return $asname;
     }
     return $typename;
 }
开发者ID:nevvermind,项目名称:zf2,代码行数:19,代码来源:Introspector.php

示例4: _dispatch

    /**
     * Loads a remote class or method and executes the function and returns
     * the result
     *
     * @param  string $method Is the method to execute
     * @param  mixed $param values for the method
     * @return mixed $response the result of executing the method
     * @throws Exception\ExceptionInterface
     */
    protected function _dispatch($method, $params = null, $source = null)
    {
        if($source) {
            if(($mapped = Parser\TypeLoader::getMappedClassName($source)) !== false) {
                $source = $mapped;
            }
        }
        $qualifiedName = empty($source) ? $method : $source.".".$method;

        if (!isset($this->table[$qualifiedName])) {
            // if source is null a method that was not defined was called.
            if ($source) {
                $className = str_replace(".", "\\", $source);
                if (class_exists($className, false) && !isset($this->_classAllowed[$className])) {
                    throw new Exception\RuntimeException('Can not call "' . $className . '" - use setClass()');
                }
                try {
                    $this->getBroker()->getClassLoader()->load($className);
                } catch (\Exception $e) {
                    throw new Exception\RuntimeException('Class "' . $className . '" does not exist: '.$e->getMessage(), 0, $e);
                }
                // Add the new loaded class to the server.
                $this->setClass($className, $source);
            } else {
                throw new Exception\BadMethodCallException('Method "' . $method . '" does not exist');
            }
        }

        $info = $this->table[$qualifiedName];
        $argv = $info->getInvokeArguments();

        if (0 < count($argv)) {
            $params = array_merge($params, $argv);
        }

        if ($info instanceof Reflection\ReflectionFunction) {
            $func = $info->getName();
            $this->_checkAcl(null, $func);
            $return = call_user_func_array($func, $params);
        } elseif ($info instanceof Reflection\ReflectionMethod) {
            // Get class
            $class = $info->getDeclaringClass()->getName();
            if ('static' == $info->isStatic()) {
                // for some reason, invokeArgs() does not work the same as
                // invoke(), and expects the first argument to be an object.
                // So, using a callback if the method is static.
                $this->_checkAcl($class, $info->getName());
                $return = call_user_func_array(array($class, $info->getName()), $params);
            } else {
                // Object methods
                try {
                    $object = $info->getDeclaringClass()->newInstance();
                } catch (\Exception $e) {
                    throw new Exception\RuntimeException('Error instantiating class ' . $class . ' to invoke method ' . $info->getName() . ': '.$e->getMessage(), 621, $e);
                }
                $this->_checkAcl($object, $info->getName());
                $return = $info->invokeArgs($object, $params);
            }
        } else {
            throw new Exception\BadMethodCallException('Method missing implementation ' . get_class($info));
        }

        return $return;
    }
开发者ID:necrogami,项目名称:zf2,代码行数:73,代码来源:Server.php

示例5: testSetMappingClass

 /**
  * Test that adding our own mappping will result in it being added to the classMap
  *
  */
 public function testSetMappingClass()
 {
     Parser\TypeLoader::setMapping('com.example.vo.Contact', 'ZendTest\\Amf\\TestAsset\\Contact');
     $class = Parser\TypeLoader::getMappedClassName('com.example.vo.Contact');
     $this->assertEquals('ZendTest\\Amf\\TestAsset\\Contact', $class);
 }
开发者ID:alab1001101,项目名称:zf2,代码行数:10,代码来源:TypeLoaderTest.php

示例6: writeObject

 /**
  * Write object to ouput stream
  *
  * @param  mixed $data
  * @return Zend\Amf\Parser\Amf3\Serializer
  */
 public function writeObject($object)
 {
     if ($this->writeObjectReference($object)) {
         return $this;
     }
     $className = '';
     //Check to see if the object is a typed object and we need to change
     switch (true) {
         // the return class mapped name back to actionscript class name.
         case $className = Parser\TypeLoader::getMappedClassName(get_class($object)):
             break;
             // Check to see if the user has defined an explicit Action Script type.
         // Check to see if the user has defined an explicit Action Script type.
         case isset($object->_explicitType):
             $className = $object->_explicitType;
             break;
             // Check if user has defined a method for accessing the Action Script type
         // Check if user has defined a method for accessing the Action Script type
         case method_exists($object, 'getASClassName'):
             $className = $object->getASClassName();
             break;
             // No return class name is set make it a generic object
         // No return class name is set make it a generic object
         case $object instanceof \stdClass:
             $className = '';
             break;
             // By default, use object's class name
         // By default, use object's class name
         default:
             $className = get_class($object);
             break;
     }
     $writeTraits = true;
     //check to see, if we have a corresponding definition
     if (array_key_exists($className, $this->_referenceDefinitions)) {
         $traitsInfo = $this->_referenceDefinitions[$className]['id'];
         $encoding = $this->_referenceDefinitions[$className]['encoding'];
         $propertyNames = $this->_referenceDefinitions[$className]['propertyNames'];
         $traitsInfo = $traitsInfo << 2 | 0x1;
         $writeTraits = false;
     } else {
         $propertyNames = array();
         if ($className == '') {
             //if there is no className, we interpret the class as dynamic without any sealed members
             $encoding = Amf\Constants::ET_DYNAMIC;
         } else {
             $encoding = Amf\Constants::ET_PROPLIST;
             foreach ($object as $key => $value) {
                 if ($key[0] != "_") {
                     $propertyNames[] = $key;
                 }
             }
         }
         $this->_referenceDefinitions[$className] = array('id' => count($this->_referenceDefinitions), 'encoding' => $encoding, 'propertyNames' => $propertyNames);
         $traitsInfo = Amf\Constants::AMF3_OBJECT_ENCODING;
         $traitsInfo |= $encoding << 2;
         $traitsInfo |= count($propertyNames) << 4;
     }
     $this->writeInteger($traitsInfo);
     if ($writeTraits) {
         $this->writeString($className);
         foreach ($propertyNames as $value) {
             $this->writeString($value);
         }
     }
     try {
         switch ($encoding) {
             case Amf\Constants::ET_PROPLIST:
                 //Write the sealed values to the output stream.
                 foreach ($propertyNames as $key) {
                     $this->writeTypeMarker($object->{$key});
                 }
                 break;
             case Amf\Constants::ET_DYNAMIC:
                 //Write the sealed values to the output stream.
                 foreach ($propertyNames as $key) {
                     $this->writeTypeMarker($object->{$key});
                 }
                 //Write remaining properties
                 foreach ($object as $key => $value) {
                     if (!in_array($key, $propertyNames) && $key[0] != "_") {
                         $this->writeString($key);
                         $this->writeTypeMarker($value);
                     }
                 }
                 //Write an empty string to end the dynamic part
                 $this->writeString($this->_strEmpty);
                 break;
             case Amf\Constants::ET_EXTERNAL:
                 throw new Parser\Exception\OutOfBoundsException('External Object Encoding not implemented');
                 break;
             default:
                 throw new Parser\Exception\OutOfBoundsException('Unknown Object Encoding type: ' . $encoding);
         }
//.........这里部分代码省略.........
开发者ID:rexmac,项目名称:zf2,代码行数:101,代码来源:Serializer.php


注:本文中的Zend\Amf\Parser\TypeLoader::getMappedClassName方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。