Classloader é uma biblioteca PHP para aulas de automóveis. A automática de classe significa que as classes são carregadas apenas quando são realmente necessárias, em vez de precisar incluir cada arquivo de classe em todas as execuções. Isso reduz a página que carrega a sobrecarga, especialmente em sites maiores, pois apenas alguns dos arquivos de classe precisam ser carregados. Normalmente, as classes também são carregadas dinamicamente de arquivos com nomes de arquivos com base no espaço para nome e no nome da classe. Isso também facilita o gerenciamento de um grande número de arquivos de classe.
Esta biblioteca suporta dois dos padrões atuais para aulas de automóveis, a saber, o PSR-0 e o PSR-4. A idéia básica por trás desses padrões é que os arquivos de classe residem em diretórios com base em seu espaço para nome e em arquivos com o nome da classe. A principal diferença entre esses dois padrões é que o PSR-4 não exige que todo o espaço para nome esteja presente na hierarquia do diretório.
No entanto, como a operação de encontrar os arquivos de classe real tende a ser relativamente dispendiosa, essa biblioteca também fornece mecanismos básicos de cache que permitem armazenar em armazenamento em armazenamento em cache nos locais dos arquivos da classe em um arquivo php. Com o cache, a diferença de desempenho entre a carga automática e o carregamento dos arquivos se torna insignificante.
A documentação da API, que pode ser gerada usando o Apigen, pode ser lida on -line em: http://kit.riimu.net/api/classloader/
A maneira mais fácil de instalar esta biblioteca é usar o Composer para lidar com suas dependências. Para instalar esta biblioteca via compositor, basta seguir estas duas etapas:
Adquirir o composer.phar executando a instalação da linha de comando Composer na raiz do seu projeto.
Depois de executar o script de instalação, você deve ter o arquivo composer.phar em seu projeto ROOT e executar o seguinte comando:
php composer.phar require "riimu/kit-classloader:^4.4"
Depois de instalar esta biblioteca via compositor, você pode carregar a biblioteca incluindo o arquivo vendor/autoload.php que foi gerado pelo compositor durante a instalação.
Se você já estiver familiarizado com como usar o Composer, pode adicionar a biblioteca como uma dependência adicionando o seguinte arquivo composer.json ao seu projeto e executando o comando composer install :
{
"require" : {
"riimu/kit-classloader" : " ^4.4 "
}
} Se você não deseja usar o Composer para carregar a biblioteca, também pode baixar a biblioteca baixando o lançamento mais recente e extraindo a pasta src para o seu projeto. Você pode incluir o arquivo src/autoload.php fornecido para carregar as classes da biblioteca.
O ClassLoader suporta a carga automática conforme definido pelos padrões PSR-0 e PSR-4 através dos métodos addBasePath() e addPrefixPath() , respectivamente. Você não precisa entender esses padrões para usar esta biblioteca, basta usar o método que funciona melhor para você.
A automática de classe PSR-0 define que os arquivos de classe devem ser colocados em uma árvore de diretório que reflita seu espaço para nome. Por exemplo, a classe 'foo bar baz' pode estar localizada em um arquivo '/path/to/classes/foo/bar/baz.php'. Esse método geralmente é a maneira mais simples de colocar seus arquivos de classe.
Usando o método addBasePath() , você pode definir os diretórios básicos onde procurar classes. Para carregar a classe mencionada acima, você pode usar o seguinte código:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addBasePath ( ' /path/to/classes/ ' );
$ loader -> register ();
$ obj = new Foo Bar Baz ();Se um diretório específico se aplicar apenas a um espaço para nome específico, você também poderá usar o segundo parâmetro para definir o espaço para nome. No entanto, o diretório ainda precisa apontar para o diretório base do espaço para nome. Por exemplo:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addBasePath ( ' /path/to/classes/ ' , ' FooBar ' );
$ loader -> register ();
$ obj = new Foo Bar Baz ();Observe que o PSR-0 também afirma que sublinhos no nome da classe são tratados como separadores de namespace (mas não sublinham em namespaces). Portanto, mesmo que sua classe fosse chamada de 'Foo bar_baz', os dois exemplos acima ainda funcionariam. Mesmo que os namespaces de sua classe sejam definidos usando sublinhados no nome da classe, você precisa usar barras de barragem no argumento de namespace.
Ao contrário do PSR-0, o padrão automático de automóveis de classe PSR-4 não exige que as classes sejam colocadas em uma árvore de diretório que reflita todo o seu espaço para nome. Em vez disso, parte do espaço para nome pode ser substituída por um caminho específico.
Por exemplo, se a sua classe 'Foo Bar Baz' estivesse localizada no arquivo '/path/to/library/baz.php', você pode registrar o caminho usando addPrefixPath() e especificar o espaço para nome, conforme demonstrado no exemplo a seguir:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ( ' /path/to/Library/ ' , ' FooBar ' );
$ loader -> register ();
$ obj = new Foo Bar Baz (); Isso permite estruturas de diretório muito mais curtas, pois todo o espaço para nome não precisa ser refletido na árvore do diretório. Também é possível omitir o argumento do espaço para nome; nesse caso, o caminho funcionará da mesma forma que os caminhos adicionados via addBasePath() , exceto pelo fato de que sublinham no nome da classe não serão tratados como separadores de namespace.
Embora você possa simplesmente chamar o caminho adicionando métodos várias vezes, é possível adicionar vários caminhos usando uma matriz. Isso geralmente facilita muito a configuração. Por exemplo, você pode adicionar vários caminhos básicos, fornecendo uma matriz:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ([
' /path/to/classes/ ' ,
' /other/path/ ' ,
]);
$ loader -> register ();Ou você pode adicionar caminhos específicos de namespace, fornecendo uma matriz associativa que define os espaços para nome usando as teclas de matriz:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ([
' FooBar ' => ' /path/to/classes/ ' ,
' OtherNamesapace ' => [ ' /other/path/ ' , ' /some/other ' ],
]);
$ loader -> register ();Conforme mostrado no exemplo acima, você também pode fornecer uma lista de caminhos para espaço para nome específico.
Procurar aulas no sistema de arquivos em cada solicitação é um assunto caro. É altamente recomendável armazenar em cache os locais dos arquivos para que eles não precisem ser pesquisados em todas as solicitações. Afinal, os arquivos da classe não tendem a se mover no sistema de arquivos.
Esta biblioteca fornece um sistema de cache muito simples via FileCacheClassLoader . A classe armazena os locais do arquivo em um único arquivo php que é carregado em todas as solicitações, em vez de pesquisar os arquivos manualmente.
O uso do FileCacheClassLoader não difere muito do uso do ClassLoader . Você simplesmente precisa fornecer o caminho para um arquivo de cache gravável no construtor. O arquivo será usado para armazenar os locais da classe e será reescrito quando novos arquivos de classe forem descobertos. Por exemplo:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader FileCacheClassLoader ( __DIR__ . ' /cache.php ' );
$ loader -> addBasePath ( ' /path/to/classes/ ' );
$ loader -> register ();Esta biblioteca é direitos autorais (c) 2012-2017 Riikka Kalliomäki.
Consulte Licença para obter licença e cópia de informações.