Инструменты пользователя

Инструменты сайта


limb3:en:architecture:lmb_file_schema

lmbFileSchema

Description

lmbFileSchema is a mechanism used in Limb to find full file paths by short aliases. lmbFileSchema is used by different class factories, template engine, etc.

UML Static structure

}

Comments

Here is the sample code that uses lmbToolkit to get access to lmbFileSchema in order to locate full file path of a command:

  $file_schema = lmbToolkit :: instance()->getFileSchema();
  $command_full_path = $file_schema->locateCommand($alias = 'Set404ErrorCommand');
  require_once($command_full_path);

lmbFileSchema delegates file name resolving to different file locators. lmbFileLocator implements the following interface:

interface FileLocatorInterface
{
  function locate($alias, $params);
  function getLocations();
}

The delegation looks like this:

class lmbFileSchema
{ 
  protected $command_locator; 
  [...]
  function locateCommand($alias)
  {
    return $this->command_locator->locate($alias);
  }
}

File locators look for files in different locations(folders) which they receive from lmbFileLocations. lmbFileLocations interface consists of the only getLocations method returning an array of folders where file should be searched:

interface lmbFileLocations
{
  function getLocations();
}

lmbFileSchema has factory methods to create FileLocators so you can extend lmbFileSchema and create concrete FileLocators you need:

class MyLimbFileSchema extends lmbFileSchema
{ 
  [...]
  protected function _createCommandLocator()
  {
    $locations = new lmbAndPackagesFileLocations();
    return new lmbCachingFileLocator(new lmbFileLocator($locations, '/command/%s.class.php'));
  } 

In this example we create caching CommandLocator that will look for files in LPKG_CORE_DIR and in packages applying '/command/%s.class.php' pattern. For example if asked to locate «lmbBaseCommand» alias, it will return 'LPKG_CORE_DIR/src/command/lmbBaseCommand.class.php'

Frequently used classes

Class nameDescription
lmbFileLocationsListAllows you to create compound lmbFileLocations.
lmbPackagesFileLocationsReturns paths to packages install for a Limb-based application. Uses lmbPackagesInfo to get information about installed packages.
TemplateFileLocationsReturns paths where template files should be looked for. Takes into account current locale and common.ini file setting: templates_path and shared_templates_path.

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
   ____   __ __  _      __   __ __ __  __
  /  _/  / //_/ | | /| / /  / // / \ \/ /
 _/ /   / ,<    | |/ |/ /  / _  /   \  / 
/___/  /_/|_|   |__/|__/  /_//_/    /_/
 
limb3/en/architecture/lmb_file_schema.txt · Последние изменения: 2010/11/10 10:02 (внешнее изменение)