OOP v PHP: Standard PHP Library (SPL) – základní funkce
Na knihovnu SPL jste už mohli narazit v souvislosti s rozhraním Iterator. Zmíněná knihovna však nabízí i další funkce, rozhraní a třídy, které mohou být v praxi velmi užitečné. Náplní tohoto článku je popis funkcí SPL knihovny.
Základní funkce
Funkce spl_classes() vypíše všechny dostupné třídy a rozhraní, které SPL knihovna nabízí. Ve verzi PHP 5.2.1 je standardně nabízeno 30 SPL tříd a rozhraní. Zde je jejich seznam:
AppendIterator ArrayIterator ArrayObject CachingIterator Countable DirectoryIterator EmptyIterator FilterIterator InfiniteIterator IteratorIterator LimitIterator NoRewindIterator OuterIterator ParentIterator RecursiveArrayIterator RecursiveCachingIterator RecursiveDirectoryIterator RecursiveFilterIterator RecursiveIterator RecursiveIteratorIterator RecursiveRegexIterator RegexIterator SeekableIterator SimpleXMLIterator SplFileInfo SplFileObject SplObjectStorage SplObserver SplSubject SplTempFileObject
Funkce spl_object_hash() vytváří unikátní ID hash, který lze použít pro identifikaci určitého objektu (id je vždy stejné, například 1428dcbc998ce0ca5919af7f4deac714).
Velmi užitečná je funkce iterator_count(), která spočítá počet elementů v iterátoru. Jako parametr přijímá objekt, který implementuje rozhraní Traversable. Pokud budete například chtít zjistit počet položek v aktuálním adresáři, můžete to udělat takto:
<?php echo iterator_count(new DirectoryIterator('./')); //ještě je třeba odečíst "./" a "../" ?>
Funkce iterator_to_array() umožňuje překopírovat položky iterátoru do pole (iterátor opět musí implementovat rozhraní Traversable). Poslední dvě funkce byly přidány do PHP 5.1.3.
Funkce pro automatické nahrávání
O automatickém nahrávání tříd do projektu jsem už psal v článku Autoloading. Kromě funkce __autoload() je ale možné použít od verze PHP 5.1.2 sadu funkcí spl_autoload_*.
Funkce spl_autoload_register() umožňuje zaregistrovat funkci pro automatické nahrávání tříd. Přijímá jeden parametr, který specifikuje název funkce nebo metody, která bude pro autoload použita. Funkce vrací v případě úspěchu boolean hodnotu true, pokud se soubor nepodaří nahrát, vrací false.
<?php class Interval { public static function autoload($class) { $file = strtolower($class) . '.php'; return self::_autoload($file); } public static function autoload2($class) { $file = strtolower(str_replace('_', '/', $class)) . '.php'; return self::_autoload($file); } private static function _autoload($file) { if (file_exists($file)) { require_once $file; return true; } return false; } } spl_autoload_register(array('Interval', 'autoload')); spl_autoload_register(array('Interval', 'autoload2')); $class = new Example(); $class2 = new Example_Example();
Jestliže funkci nepředáte žádný parametr, použije se výchozí nastavení funkce spl_autoload(). Pokud chcete nyní použít funkci __autoload(), musíte ji zaregistrovat podobně jako ostatní.
Opakem k výše zmíněné funkci je funkce spl_autoload_unregister(), která funkci pro autoload odregistruje. Funkce spl_autoload_functions() vrací seznam všech zaregistrovaných funkcí pro automatické nahrávání tříd. Díky funkci spl_autoload_call() můžete manuálně zavolat všechny autoload funkce pro automatické nahrávání tříd do projektu.
Funkce spl_autoload() určuje výchozí nastavení pro funkci __autoload(). Pokud bude zavolána funkce spl_autoload_register() bez parametrů, pak se zavolá funkce spl_autoload() a bude jí předán název třídy jako parametr. Funkce název převede na malá písmena a přidá koncovku .php či .inc (ve výchozí podobě) a zkusí třídu načíst. Funkcí spl_autoload_extensions je pak možné specifikovat koncovky souborů.
spl_autoload_extensions('.class.php'); spl_autoload_register(); //pokusí se vyhledat soubor example.class.php $class = new Example();
Pozn. red.: Zdůrazňujeme, že tento text se týká PHP 5.
Mohlo by vás také zajímat
-
Jak se chránit před podvody na internetu – část 2
14. října 2024 -
10 nejpopulárnějších programovacích jazyků a jejich využití
9. listopadu 2023 -
AI a internetové podvody
29. října 2024 -
Jak zabezpečit váš chytrý telefon před kybernetickými hrozbami
30. listopadu 2023
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024
MARTIN
Dub 14, 2011 v 11:38mám strašně malé písmena když otevřu jiné položky než internet co mám dělat?