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


PHP Yii::autoload_1方法代码示例

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


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

示例1: import

 /**
  * Imports a class or a directory.
  *
  * Importing a class is like including the corresponding class file.
  * The main difference is that importing a class is much lighter because it only
  * includes the class file when the class is referenced the first time.
  *
  * Importing a directory is equivalent to adding a directory into the PHP include path.
  * If multiple directories are imported, the directories imported later will take
  * precedence in class file searching (i.e., they are added to the front of the PHP include path).
  *
  * Path aliases are used to import a class or directory. For example,
  * <ul>
  *   <li><code>application.components.GoogleMap</code>: import the <code>GoogleMap</code> class.</li>
  *   <li><code>application.components.*</code>: import the <code>components</code> directory.</li>
  * </ul>
  *
  * The same path alias can be imported multiple times, but only the first time is effective.
  * Importing a directory does not import any of its subdirectories.
  *
  * Starting from version 1.1.5, this method can also be used to import a class in namespace format
  * (available for PHP 5.3 or above only). It is similar to importing a class in path alias format,
  * except that the dot separator is replaced by the backslash separator. For example, importing
  * <code>application\components\GoogleMap</code> is similar to importing <code>application.components.GoogleMap</code>.
  * The difference is that the former class is using qualified name, while the latter unqualified.
  *
  * Note, importing a class in namespace format requires that the namespace corresponds to
  * a valid path alias once backslash characters are replaced with dot characters.
  * For example, the namespace <code>application\components</code> must correspond to a valid
  * path alias <code>application.components</code>.
  *
  * @param string $alias path alias to be imported
  * @param boolean $forceInclude whether to include the class file immediately. If false, the class file
  * will be included only when the class is being used. This parameter is used only when
  * the path alias refers to a class.
  * @return string the class name or the directory that this alias refers to
  * @throws CException if the alias is invalid
  */
 public static function import($alias, $forceInclude = false)
 {
     if (isset(self::$_imports[$alias])) {
         // previously imported
         return self::$_imports[$alias];
     }
     if (class_exists($alias, false) || interface_exists($alias, false)) {
         return self::$_imports[$alias] = $alias;
     }
     if (($pos = strrpos($alias, '\\')) !== false) {
         $namespace = str_replace('\\', '.', ltrim(substr($alias, 0, $pos), '\\'));
         if (($path = self::getPathOfAlias($namespace)) !== false) {
             $classFile = $path . DIRECTORY_SEPARATOR . substr($alias, $pos + 1) . '.php';
             if ($forceInclude) {
                 if (is_file($classFile)) {
                     require $classFile;
                 } else {
                     throw new CException(Yii::t('yii', 'Alias "{alias}" is invalid. Make sure it points to an existing PHP file and the file is readable.', array('{alias}' => $alias)));
                 }
                 self::$_imports[$alias] = $alias;
             } else {
                 self::$classMap[$alias] = $classFile;
             }
             return $alias;
         } else {
             // try to autoload the class with an autoloader
             if (class_exists($alias, true)) {
                 return self::$_imports[$alias] = $alias;
             } else {
                 throw new CException(Yii::t('yii', 'Alias "{alias}" is invalid. Make sure it points to an existing directory or file.', array('{alias}' => $namespace)));
             }
         }
     }
     if (($pos = strrpos($alias, '.')) === false) {
         // try to autoload the class with an autoloader if $forceInclude is true
         if ($forceInclude && (Yii::autoload_1($alias, true) || class_exists($alias, true))) {
             self::$_imports[$alias] = $alias;
         }
         return $alias;
     }
     $className = (string) substr($alias, $pos + 1);
     $isClass = $className !== '*';
     if ($isClass && (class_exists($className, false) || interface_exists($className, false))) {
         return self::$_imports[$alias] = $className;
     }
     if (($path = self::getPathOfAlias($alias)) !== false) {
         if ($isClass) {
             if ($forceInclude) {
                 if (is_file($path . '.php')) {
                     require $path . '.php';
                 } else {
                     throw new CException(Yii::t('yii', 'Alias "{alias}" is invalid. Make sure it points to an existing PHP file and the file is readable.', array('{alias}' => $alias)));
                 }
                 self::$_imports[$alias] = $className;
             } else {
                 self::$classMap[$className] = $path . '.php';
             }
             return $className;
         } else {
             if (self::$_includePaths === null) {
                 self::$_includePaths = array_unique(explode(PATH_SEPARATOR, get_include_path()));
                 if (($pos = array_search('.', self::$_includePaths, true)) !== false) {
//.........这里部分代码省略.........
开发者ID:fufudao,项目名称:yii2-base,代码行数:101,代码来源:Yii.php


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