use ბრძანება და ნეიმსფეისები PHP-ის OOP-ში
დავუშვათ გვაქვს შემდეგი კლასი Data:
<?php
namespace \Core\Admin;
class Data
{
public function __construct($num)
{
}
}
?>
დავუშვათ ასევე არის კლასი Page, რომელიც ქმნის
თავის შიგნით Data კლასის ობიექტებს:
<?php
namespace Users;
class Page
{
public function __construct()
{
$data1 = new \Core\Admin\Data('1');
$data2 = new \Core\Admin\Data('2');
}
}
?>
როგორც ხედავთ, ჩვენი ორივე კლასი მდებარეობს
სრულიად სხვადასხვა ნეიმსფეისებში, ამიტომ
Data კლასის გამოძახებების გამარტივება შეუძლებელია,
ისე, როგორც ეს წინა გაკვეთილზე გავაკეთეთ. თუმცა, ეს გამოძახებები ძალიან გრძელი
და მოუხერხებელია, რადგან Data კლასის
ყოველ გამოძახებაში მოგვიწევს მისი გრძელი
ნეიმსფეისის მითითება.
მსგავსი პრობლემის გადასაჭრელად არსებობს
სპეციალური ბრძანება use. ამ ბრძანების საშუალებით
საკმარისია კლასი მხოლოდ ერთხელ მივაკავშიროთ
მისი სრული სახელით, და ამის შემდეგ
ამ კლასთან მიმართვა შესაძლებელი იქნება უბრალოდ
კლასის სახელით. ნახეთ მაგალითი:
<?php
namespace Users;
use \Core\Admin\Data; // ვაკავშირებთ კლასს
class Page extends Controller
{
public function __construct()
{
$data1 = new Data('1'); // ვუწოდებთ უბრალოდ სახელით
$data2 = new Data('2'); // ვუწოდებთ უბრალოდ სახელით
}
}
?>
გაამარტივეთ შემდეგი კოდი
use-ის გამოყენებით:
<?php
namespace Project;
class Test
{
public function __construct()
{
// ვქმნით ერთი კლასის 3 ობიექტს:
$data1 = new \Core\Users\Data('user1');
$data2 = new \Core\Users\Data('user3');
$data3 = new \Core\Users\Data('user3');
}
}
?>
მოცემულია შემდეგი კლასები:
<?php
namespace Core\Admin;
class Controller
{
}
?>
<?php
namespace Users;
class Page extends \Core\Admin\Controller
{
}
?>
გაამარტივეთ კლასის მემკვიდრეობით მიღების კოდი,
გამოიყენეთ ბრძანება use.