YAF_LOADER(3) 1 YAF_LOADER(3)The Yaf_Loader classINTRODUCTION
Yaf_Loader introduces a comprehensive autoloading solution for Yaf.
The first time an instance of Yaf_Application is retrieved, Yaf_Loader will instance a singleton, and registers itself with spl_autoload.
You retrieve an instance using the Yaf_Loader::getInstance
Yaf_Loader attempt to load a class only one shot, if failed, depend on yaf.use_spl_auload, if this config is On Yaf_Loader::autoload will
return FALSE, thus give the chance to other autoload function. if it is Off (by default), Yaf_Loader::autoload will return TRUE, and more
important is that a very usefull warning will be triggerd (very usefull to find out why a class could not be loaded).
Note
Please keep yaf.use_spl_autoload Off unless there is some library have their own autoload mechanism and impossible to rewrite it.
By default, Yaf_Loader assume all library (class defined script) store in the global library directory, which is defined in the
php.ini(yaf.library).
If you want Yaf_Loader search some classes(libraries) in the local class directory(which is defined in application.ini, and by default, it
is application.directory . "/library"), you should register the class prefix using the Yaf_Loader::registerLocalNameSpace
Let's see some examples(assuming APPLICATION_PATH is application.directory):
Example #1
Config example
// Assuming the following configure in php.ini:
yaf.library = "/global_dir"
//Assuming the following configure in application.ini
application.library = APPLICATION_PATH "/library"
Assuming the following local name space registerd:
Example #2
Register localnamespace
<?php
class Bootstrap extends Yaf_Bootstrap_Abstract{
public function _initLoader($dispatcher) {
Yaf_Loader::getInstance()->registerLocalNameSpace(array("Foo", "Bar"));
}
?>
Then the autoload examples:
Example #3
Load class example
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
As of PHP 5.3, you can use namespace:
Example #4
Load namespace class example
class FooBarDummy =>
// APPLICATION_PATH/library/Foo/Bar/Dummy.php
class FooBarBarDummy =>
// /global_dir/FooBar/Bar/Dummy.php
You may noticed that all the folder wth the first letter capitalized, you can make them lowercase by set yaf.lowcase_path = On in php.ini
Yaf_Loader is also designed to load the MVC classes, and the rule is:
Example #5
MVC class loading example
Controller Classes =>
// APPLICATION_PATH/controllers/
Model Classes =>
// APPLICATION_PATH/models/
Plugin Classes =>
// APPLICATION_PATH/plugins/
Yaf identify a class's suffix(this is by default, you can also change to the prefix by change the configure yaf.name_suffix) to decide
whether it is a MVC class:
Example #6
MVC class distinctions
Controller Classes =>
// ***Controller
Model Classes =>
// ***Model
Plugin Classes =>
// ***Plugin
some examples:
Example #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
Note
As of 2.1.18, Yaf supports Controllers autoloading for user script side, (which means the autoloading triggered by user php script,
eg: access a controller static property in Bootstrap or Plugins), but autoloader only try to locate controller class script under
the default module folder, which is "APPLICATION_PATH/controllers/".
also, the directory will be affected by yaf.lowcase_path.
CLASS SYNOPSIS
Yaf_Loader
Yaf_Loader
Properties
o protected$_local_ns
o protected$_library
o protected$_global_library
o static$_instance
Methods
o public void Yaf_Loader::autoload (void )
o public void Yaf_Loader::clearLocalNamespace (void )
o private void Yaf_Loader::__clone (void )
o private Yaf_Loader::__construct (void )
o publicstatic void Yaf_Loader::getInstance (void )
o public Yaf_Loader Yaf_Loader::getLibraryPath ([bool $is_global = false])
o public void Yaf_Loader::getLocalNamespace (void )
o publicstatic void Yaf_Loader::import (void )
o public void Yaf_Loader::isLocalName (void )
o public void Yaf_Loader::registerLocalNamespace (mixed $prefix)
o public Yaf_Loader Yaf_Loader::setLibraryPath (string $directory, [bool $is_global = false])
o private void Yaf_Loader::__sleep (void )
o private void Yaf_Loader::__wakeup (void )
PROPERTIES
o $_local_ns
-
o $_library
- By default, this value is application.directory . "/library", you can change this either in the application.ini(applica-
tion.library) or call to Yaf_Loader::setLibraryPath
o $_global_library
-
o $_instance
-
PHP Documentation Group YAF_LOADER(3)