Yaf_Loader
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Yaf_Loader
Референца за `class.yaf-loader.php` со подобрена типографија и навигација.
Класата Yaf_Loader
(Yaf >=1.0.0)
Вовед
Yaf_Loader воведува сеопфатно решение за авто-вчитање за Yaf.
Првиот пат кога ќе се добие инстанца на Yaf_Application се добива, Yaf_Loader ќе инстанцира синглтон и ќе се регистрира себеси со spl_autoload. Инстанца добивате користејќи го Yaf_Loader::getInstance()
Yaf_Loader се обидува да вчита класа само еднаш, ако не успее, зависи од yaf.use_spl_auload, ако оваа конфигурација е Вклучено Yaf_Loader::autoload() ќе врати
false, со што се дава шанса на друга функција за авто-вчитање. ако е Исклучено (по дифолт), Yaf_Loader::autoload() ќе врати
true, и поважно е дека ќе се активира многу корисно предупредување (многу корисно за да се открие зошто класата не можела да се вчита).
Забелешка:
Ве молиме задржете го yaf.use_spl_autoload Исклучено освен ако постои некоја библиотека што има свој механизам за авто-вчитање и е невозможно да се преработи.
Стандардно, Yaf_Loader претпоставува дека сите библиотеки (скрипти дефинирани со класи) се чуваат во глобалната библиотека директориум, што е дефинирано во php.ini(yaf.library).
Ако сакате Yaf_Loader да пребарувате некои класи (библиотеки) во локалниот директориум за класи(што е дефинирано во application.ini, и по дифолт, тоа е application.directory . "/library"), треба да го регистрирате префиксот на класата користејќи го Yaf_Loader::registerLocalNameSpace()
Ајде да видиме неколку примери (претпоставувајќи дека APPLICATION_PATH е application.directory):
Пример #1 Пример за конфигурација
// Assuming the following configure in php.ini: yaf.library = "/global_dir" //Assuming the following configure in application.ini application.library = APPLICATION_PATH "/library"
Пример #2 Регистрирај локален именски простор
<?php
class Bootstrap extends Yaf_Bootstrap_Abstract{
public function _initLoader($dispatcher) {
Yaf_Loader::getInstance()->registerLocalNameSpace(array("Foo", "Bar"));
}
}
?>Пример #3 Пример за вчитување класа
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
Пример #4 Пример за вчитување класа од именски простор
class \Foo\Bar\Dummy => // APPLICATION_PATH/library/Foo/Bar/Dummy.php class \FooBar\Bar\Dummy => // /global_dir/FooBar/Bar/Dummy.php
Можеби сте забележале дека сите папки со прва буква напишана со голема буква, можете да ги направите со мали букви со поставување yaf.lowcase_path = Вклучено во php.ini
Yaf_Loader е исто така дизајниран да ги вчитува MVC класите, а правилото е:
Пример #5 Пример за вчитување на MVC класа
Controller Classes => // APPLICATION_PATH/controllers/ Model Classes => // APPLICATION_PATH/models/ Plugin Classes => // APPLICATION_PATH/plugins/
Пример #6 Разлики на MVC класи
Controller Classes =>
// ***Controller
Model Classes =>
// ***Model
Plugin Classes =>
// ***Plugin
Пример #7 Пример за вчитување на MVC
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.Забелешка:
Од 2.1.18, Yaf поддржува автоматско вчитување на контролери од страна на кориснички скрипти (што значи автоматско вчитување предизвикано од корисничка PHP скрипта, на пр.: пристап до статичка својство на контролер во Bootstrap или Plugins), но автолоадерот само се обидува да ја лоцира скриптата на класата на контролерот под стандардната папка на модулот, која е "APPLICATION_PATH/controllers/".
Синопсис на класата
Својства
- _local_ns
- _library
-
Стандардно, оваа вредност е application.directory . "/library", можете да го промените ова или во application.ini(application.library) или повикајте го Yaf_Loader::setLibraryPath()
- _global_library
- _instance
Содржина
- Yaf_Loader::autoload — Постави директориум со шаблони
- Yaf_Loader::clearLocalNamespace — Целта на автоматско вчитување
- Yaf_Loader::__construct — Целта на __construct
- Yaf_Loader::getInstance — Целта на clearLocalNamespace
- Yaf_Loader::getLibraryPath — Целта на getInstance
- Yaf_Loader::getLocalNamespace — Земи ја патеката на библиотеката
- Yaf_Loader::getNamespacePath — Целта на getLocalNamespace
- Yaf_Loader::getLocalNamespace — Преземи ја патеката на регистриран простор на имиња
- Yaf_Loader::import — Преземи ги сите информации за регистрирани простори на имиња
- Yaf_Loader::isLocalName — Целта на import
- Yaf_Loader::registerLocalNamespace — Целта на isLocalName
- Yaf_Loader::registerNamespace — Регистрирај локален префикс на класа
- Yaf_Loader::setLibraryPath — Регистрирај простор на имиња со патека за пребарување