[[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)