Use käsu ja nimeruumide kasutamine OOP-s PHP-s
Oletame, et meil on järgmine klass Data:
<?php
namespace \Core\Admin;
class Data
{
public function __construct($num)
{
}
}
?>
Oletame ka, et on olemas klass Page, mis loob
iseses objektid klassist Data:
<?php
namespace Users;
class Page
{
public function __construct()
{
$data1 = new \Core\Admin\Data('1');
$data2 = new \Core\Admin\Data('2');
}
}
?>
Nagu näete, on mõlemad meie klassid
täiesti erinevates nimeruumides, seetõttu
klassi Data kutseid ei saa lihtsustada
sarnaselt sellele, kuidas me seda tegime eelmises
õppetükis. Need kutsed on siiski väga pikad
ja ebamugavad, kuna igas klassi Data
kutses tuleb määrata selle pikk nimeruum.
Sellise probleemi lahendamiseks on olemas
spetsiaalne käsk use. Selle
käsu abil piisab klassist üks kord ühendust võtmast
tema täieliku nime järgi ja pärast seda
saab sellele klassile lihtsalt viidata
klassi nime järgi. Vaadake näidet:
<?php
namespace Users;
use \Core\Admin\Data; // ühendame klassi
class Page extends Controller
{
public function __construct()
{
$data1 = new Data('1'); // kutsume lihtsalt nime järgi
$data2 = new Data('2'); // kutsume lihtsalt nime järgi
}
}
?>
Lihtsustage järgnevat koodi kasutades
use käsku:
<?php
namespace Project;
class Test
{
public function __construct()
{
// Loome 3 objekti ühest klassist:
$data1 = new \Core\Users\Data('user1');
$data2 = new \Core\Users\Data('user3');
$data3 = new \Core\Users\Data('user3');
}
}
?>
Antud on järgmised klassid:
<?php
namespace Core\Admin;
class Controller
{
}
?>
<?php
namespace Users;
class Page extends \Core\Admin\Controller
{
}
?>
Lihtsustage klassi pärimise koodi, rakendades
use käsku.