კლასების ფსევდონიმები ნეიმსფეისებისთვის OOP-ში PHP-ში
დავუშვათ, გვაქვს ორი კლასი Data,
რომლებიც სხვადასხვა ნეიმსფეისს ეკუთვნის.
დავუშვათ, რომელიმე კლასში გვჭირდება ორივე
ამ კლასის ობიექტები:
<?php
namespace Project;
class Test
{
public function __construct()
{
$data1 = new \Core\Users\Data; // ვქმნით ობიექტს
$data2 = new \Core\Admin\Data; // ვქმნით ობიექტს
}
}
?>
დავუშვათ, გადავწყვიტეთ გამოძახებები გვემარტივებინა
use ბრძანების მეშვეობით. ამ შემთხვევაში
პრობლემა გვექნება: ორივე კლასს აქვს სახელი Data,
რაც ნიშნავს, რომ სახელების კონფლიქტი გვექნება:
<?php
namespace Project;
// იქნება სახელების კონფლიქტი:
use \Core\Users\Data; // ვუკავშირდებით პირველ კლასს
use \Core\Admin\Data; // ვუკავშირდებით მეორე კლასს
class Test
{
public function __construct()
{
$data1 = new Data;
$data2 = new Data;
}
}
?>
ამ პრობლემის გადასაჭრელად არსებობს სპეციალური
ბრძანება as, რომელიც საშუალებას აძლევს დავუმატოთ შემოტანილ
კლასს ფსევდონიმი - სახელი, under which
ეს კლასი იქნება ხელმისაწვდომი ამ ფაილში. მოდით
გადავარქვათ ჩვენი კლასები Data:
<?php
namespace Project;
use \Core\Users\Data as UsersData;
use \Core\Admin\Data as AdminData;
class Test
{
public function __construct()
{
$data1 = new UsersData;
$data2 = new AdminData;
}
}
?>
გაამარტივეთ შემდეგი კოდი
use-ის გამოყენებით:
<?php
namespace Project;
class Test
{
public function __construct()
{
$pageController = new \Resource\Controller\Page;
$pageModel = new \Resource\Model\Page;
}
}
?>
გაამარტივეთ შემდეგი კოდი
use-ის გამოყენებით:
<?php
namespace Project\Data;
class Test
{
public function __construct()
{
$pageController = new \Project\Data\Controller\Page;
$pageModel = new \Project\Data\Model\Page;
}
}
?>