Saya mengalami sedikit masalah dengan ruang nama dan use
pernyataan.
Saya memiliki tiga file: ShapeInterface.php
, Shape.php
dan Circle.php
.
Saya mencoba melakukan ini menggunakan jalur relatif jadi saya telah meletakkan ini di semua kelas:
namespace Shape;
Di kelas lingkaran saya, saya memiliki yang berikut:
namespace Shape;
//use Shape;
//use ShapeInterface;
include 'Shape.php';
include 'ShapeInterface.php';
class Circle extends Shape implements ShapeInterface{ ....
Jika saya menggunakan include
pernyataan, saya tidak mendapatkan kesalahan. Jika saya mencoba use
pernyataan yang saya dapatkan:
Kesalahan fatal: Kelas 'Bentuk \ Bentuk' tidak ditemukan di /Users/shawn/Documents/work/sites/workspace/shape/Circle.php di baris 8
Bisakah seseorang memberi saya sedikit panduan tentang masalah ini?
php
namespaces
Shawn Northrop
sumber
sumber
Jawaban:
The
use
Operator adalah untuk memberikan alias untuk nama-nama kelas, interface atau ruang nama lainnya. Sebagian besaruse
pernyataan merujuk ke namespace atau kelas yang ingin Anda persingkat:setara dengan:
Jika
use
operator digunakan dengan kelas atau nama antarmuka, ia memiliki kegunaan berikut:The
use
operator tidak harus bingung dengan autoloading . Sebuah kelas dimuat secara otomatis (meniadakan kebutuhan untukinclude
) dengan mendaftarkan sebuah pemuat otomatis (misalnya denganspl_autoload_register
). Anda mungkin ingin membaca PSR-4 untuk melihat implementasi autoloader yang sesuai.sumber
Jika Anda perlu mengurutkan kode Anda ke dalam namespace, cukup gunakan kata kunci
namespace
:file1.php
Di file2.php
Anda juga bisa menggunakan
use
. Jika di file2 Anda masukkanuse foo\bar as mypath;
Anda perlu menggunakan
mypath
alih-alihbar
di mana pun dalam file:Menggunakan
use foo\bar;
sama denganuse foo\bar as bar;
.sumber