[[oktatas:programozás:php:php_oop|< PHP OOP]] ====== Névterek ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2021 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]] * Web: https://szit.hu ===== A névterekről ===== A névtereknek két előnyük van: * Csoportosítjuk az összetartozó osztályokat. * Egy nevet többször is felhasználhatunk. A névterek az 5.3 PHP verziótól állnak rendelkezésre. {{:oktatas:programozas:php:php_oop:globalis_ter.png?400|}} ===== Létrehozás ===== namespace Nevter1; A névtér meghatározásoknak mindig a többi PHP utasítás előtt kell állnia. ===== Dolgozók ===== ==== Ütközés ==== Hibát kapunk a következő végrehajtásakor. "; } } "; } } Ha futtatjuk a kódot, **hibát kapunk**, mivel ütközik a hatvan.php Dolgozo osztálya a miskolc.php dolgozó osztályával. ==== Minősített név ==== Tegyük a hatvan.php fájlban a dolgozó osztályt a Hatvan névtérbe: "; } } "; } } Az index.php-ban a Hatvan\Dolgozo az osztály minősített (angolul: qualified) neve. A hatvan.php-ban található Dolgozo osztályt leválasztottuk a globális névtérből a Hatvan névtérbe, így ütközés már nem áll fenn. ==== Nem minősített név ==== Tegyük a index.php tartalmát is a Hatvan névtérbe. Így nem kell megadni a Dolgozo osztály példányosításánál a névteret, nem minősített névvel (angolul: unqualified name) hivatkozhatunk rá: "; } } "; } } ==== Teljesen minősített név ==== De meghívhatom a globális térben maradt Dolgozo osztályt is, ha "\" karakterrel a globális térre, vagy a gyökérre hivatkozom. Ezt nevezik teljesen minősített névnek (angolul: fully qualified name, FQDN). "; } } "; } } ==== A use használata ==== Ha nem minősített nevet használunk, és az index.php tartalmát nem szeretnénk a Hatvan névtérbe helyezni, használjuk a use kulcsszót. Ezzel használatba vehetjük az adott névtér, adott osztályát: "; } } "; } } Így viszont a nem minősített név nem használható. ==== Az álnév használata ==== Az álnév segítségével használható a nem minősített név is: ===== Forrás ===== * https://www.youtube.com/watch?v=zTxz_kOLIZM (2021) * https://symfonycasts.com/screencast/php-namespaces/namespaces (2021) * https://www.youtube.com/watch?v=0SZW-wBY_WI (2021)