男女疯狂一边摸一边做羞羞视频|啊好深好硬快点用力别停动态图|亚洲一区无码中文字幕|特级无码毛片免费视频播放▽|久久狠狠躁免费观看|国内精品久久久久久网站

The Yaf_Loader class

(Yaf >=1.0.0)

簡(jiǎn)介

Yaf_Loader 類(lèi)為Yaf提供了自動(dòng)加載功能的全面解決方案。

在第一次使用的時(shí)候,將檢索 Yaf_Application 的實(shí)例, Yaf_Loader 實(shí)現了單利模式,并使用spl_autoload注冊它自己。 通過(guò) Yaf_Loader::getInstance() 返回它的實(shí)例

Yaf_Loader 加載一個(gè)類(lèi)時(shí)僅僅嘗試一次,如果失敗了, 后面的操作將取決于yaf.use_spl_auload, 如果這個(gè)配置項為On,Yaf_Loader::autoload() 將會(huì )返回FALSE, 從而把機會(huì )讓給其他的自動(dòng)加載功能。如果這個(gè)配置項為Off(默認), Yaf_Loader::autoload() 將會(huì )返回TRUE, 最重要的是將會(huì )拋出一個(gè)非常有用的警告(對于找出一個(gè)類(lèi)加載失敗非常有用)。

注意:

請保持yaf.use_spl_autoload保持關(guān)閉,除非有一些library有自己的autoload機制,并且是無(wú)法改寫(xiě)的。

默認情況下,Yaf_Loader 收集所有library(類(lèi)定義的腳本)儲存進(jìn)在 php.ini(yaf.library)定義的global library directory之中。

如果你想使用 Yaf_Loader 搜索本地類(lèi)(庫)(定義在application.ini, 默認情況下,它是 application.directory . "/libraray"), 你需要使用 Yaf_Loader::registerLocalNameSpace() 注冊本地類(lèi)前綴。

讓我們來(lái)看看一些例子(假設 APPLICATION_PATH 是 application.directory):

示例 #1 Config example

// Assuming the following configure in php.ini:
yaf.libraray = "/global_dir"

//Assuming the following configure in application.ini
application.libraray = APPLICATION_PATH "/library"
假設以下本地名稱(chēng)空間已被注冊:

示例 #2 注冊本地命名空間

<?php
class Bootstrap extends Yaf_Bootstrap_Abstract{
     public function 
_initLoader($dispatcher) {
          
Yaf_Loader::getInstance()->registerLocalNameSpace(array("Foo""Bar"));
     }
?>
自動(dòng)加載例子:

示例 #3 加載類(lèi)

class Foo_Bar_Test =>
  // APPLICATION_PATH/library/Foo/Bar/Test.php
  
class GLO_Name  =>
  // /global_dir/Glo/Name.php
 
class BarNon_Test
  // /global_dir/Barnon/Test.php
在PHP 5.3中,你可以使用命名空間:

示例 #4 加載命名空間類(lèi)

class \Foo\Bar\Dummy =>
   // APPLICATION_PATH/library/Foo/Bar/Dummy.php

class \FooBar\Bar\Dummy =>
   // /global_dir/FooBar/Bar/Dummy.php

你可能會(huì )注意到所有文件夾名字的首字母是大寫(xiě)的,你可以通過(guò)在php.ini中設置 yaf.lowcase_path = On 來(lái)將它們小寫(xiě)。

Yaf_Loader 也是設計來(lái)加載MVC類(lèi),響應的規則如下:

示例 #5 MVC類(lèi)加載例子

Controller Classes =>
// APPLICATION_PATH/controllers/

Model Classes =>
// APPLICATION_PATH/models/

Plugin Classes =>
// APPLICATION_PATH/plugins/
Yaf 通過(guò)識別一個(gè)類(lèi)的后綴(這個(gè)是默認的,你也可以通過(guò)改變配置項 yaf.name_suffix 來(lái)將它改為通過(guò)前綴識別)來(lái)決定它是否是一個(gè)MVC類(lèi):

示例 #6 MVC 類(lèi)區別

Controller Classes =>
    // ***Controller

Model Classes =>
    // ***Model

Plugin Classes =>
    // ***Plugin
some examples:

示例 #7 MVC loading example

class IndexController
    // APPLICATION_PATH/controllers/Index.php

class DataModel =>
   // APPLICATION_PATH/models/Data.php

class DummyPlugin =>
  // APPLICATION_PATH/plugins/Dummy.php

class A_B_TestModel =>
  // APPLICATION_PATH/models/A/B/Test.php
該目錄將受 yaf.lowcase_path 的影響。

類(lèi)摘要

class Yaf_Loader {
/* 屬性 */
protected $_local_ns;
protected $_library;
protected $_global_library;
static $_instance;
/* 方法 */
public autoload(): void
public clearLocalNamespace(): void
private__construct()
public static getInstance(): void
public getLibraryPath(bool $is_global = false): Yaf_Loader
public getLocalNamespace(): void
public getNamespacePath(string $namespaces): string
public getNamespaces(): array
public static import(): void
public isLocalName(): void
public registerLocalNamespace(mixed $prefix = ?): void
public registerNamespace(string|array $namespaces, string $path = ?): bool
public setLibraryPath(string $directory, bool $is_global = false): Yaf_Loader
}

屬性

_local_ns

_library

默認情況下,它的值是 application.directory . "/library", 你可以通過(guò)修改application.ini(application.library)或者調用 Yaf_Loader::setLibraryPath() 改變它。

_global_library

_instance

目錄

男女疯狂一边摸一边做羞羞视频|啊好深好硬快点用力别停动态图|亚洲一区无码中文字幕|特级无码毛片免费视频播放▽|久久狠狠躁免费观看|国内精品久久久久久网站