Komanda use dhe hapësirat e emrave në OOP në PHP
Le të supozojmë se kemi klasën e mëposhtme Data:
<?php
namespace \Core\Admin;
class Data
{
public function __construct($num)
{
}
}
?>
Le të supozojmë gjithashtu se ekziston klasa Page, e cila krijon
brenda saj objekte të klasës Data:
<?php
namespace Users;
class Page
{
public function __construct()
{
$data1 = new \Core\Admin\Data('1');
$data2 = new \Core\Admin\Data('2');
}
}
?>
Siç e shihni, të dy klasat tona janë
në hapësira krejtësisht të ndryshme emrash, prandaj
thirrjet e klasës Data nuk mund të thjeshtohen,
ngjashëm me mënyrën si e bëmë në mësimin e mëparshëm.
Këto thirrje, megjithatë, janë shumë të gjata
dhe të papërshtatshme, pasi në çdo thirrje të klasës
Data duhet të specifikohet hapësira e saj e gjatë e emrave.
Për zgjidhjen e problemeve të tilla ekziston
komanda speciale use. Me ndihmën
e kësaj komande mjafton të lidhni një herë
klasën me emrin e saj të plotë, dhe pas kësaj
do të mund të iu referoheni kësaj klase thjesht
me emrin e klasës. Shikoni shembullin:
<?php
namespace Users;
use \Core\Admin\Data; // lidhim klasën
class Page extends Controller
{
public function __construct()
{
$data1 = new Data('1'); // e thërrasim thjesht me emër
$data2 = new Data('2'); // e thërrasim thjesht me emër
}
}
?>
Thjeshtoni kodin e mëposhtëm duke përdorur
use:
<?php
namespace Project;
class Test
{
public function __construct()
{
// Krijojmë 3 objekte të një klase:
$data1 = new \Core\Users\Data('user1');
$data2 = new \Core\Users\Data('user3');
$data3 = new \Core\Users\Data('user3');
}
}
?>
Janë dhënë klasat e mëposhtme:
<?php
namespace Core\Admin;
class Controller
{
}
?>
<?php
namespace Users;
class Page extends \Core\Admin\Controller
{
}
?>
Thjeshtoni kodin e trashëgimisë së klasës, duke aplikuar
komandën use.