Termasuk file dari kelas

Saya memiliki struktur file berikut:

www
|-- MyLibrary
|    |-- Example.class.php 
|    +-- someDirectory
|         +-- somefile.php
|-- other_file.php
+-- another_file.php

Saya ingin memasukkan file dari kelas:

<?php
    class Example {
        public function test(){
            include "someDirectory/somefile.php";
        }
    }
?>

Ini akan menimbulkan kesalahan karena termasuk dari file/direktori lain selain kelas. Karena saya sedang menulis perpustakaan, saya tidak tahu direktori tempat file berada dan jalur dari file yang membuat instance dan 'somefile.php'.

Jadi pertanyaan saya adalah: Apakah ada cara untuk memasukkan 'somefile.php' dari 'Example.class.php'?


person Marnix Bouhuis    schedule 17.03.2016    source sumber
comment
Anda bisa menggunakan sistem autoloader php yang sangat menyederhanakan masalah seperti ini. php.net/manual/en/bahasa.oop5.autoload.php Anda juga dapat menggunakan konstanta yang berisi jalur absolut ke aplikasi yang Anda tambahkan ke jalur penyertaan.   -  person kerwan    schedule 17.03.2016


Jawaban (2)


Anda dapat menggunakan konstanta __DIR__ di PHP

Direktori file. Jika digunakan di dalam penyertaan, direktori file yang disertakan akan dikembalikan. Ini setara dengan dinama(__FILE__). Nama direktori ini tidak memiliki garis miring kecuali direktori root.

(https://secure.php.net/manual/en/lingual.constants.predefinisi.php)

Jadi itu akan menjadi:

<?php
    class Example {
        public function test(){
            include __DIR__."/../someDirectory/somefile.php";
        }
    }
?>

Dengan ini Anda menggunakan jalur relatif ke file.

person Matthijs    schedule 17.03.2016

Anda bisa mendapatkan jalur saat ini tempat file tersebut berada.

Dalam struktur yang sedang Anda kerjakan, Anda dapat menulis ulang kelas Contoh menjadi ini:

<?php
    class Example {
        public function test(){
            include __DIR__ . DIRECTORY_SEPARATOR . "someDirectory/somefile.php";
        }
    }
?>

Konstanta __DIR__ akan memberi Anda folder saat ini.

person Blaatpraat    schedule 17.03.2016