รวมถึงไฟล์จากชั้นเรียน

ฉันมีโครงสร้างไฟล์ดังต่อไปนี้:

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

ฉันต้องการรวมไฟล์จากชั้นเรียน:

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

มันจะเกิดข้อผิดพลาดเนื่องจากรวมจากไฟล์/ไดเร็กทอรีอื่นที่ไม่ใช่คลาส เนื่องจากฉันกำลังเขียนไลบรารี ฉันจึงไม่ทราบไดเร็กทอรีที่จะเก็บไฟล์ไว้และเส้นทางจากไฟล์ที่สร้างอินสแตนซ์และ 'somefile.php'

คำถามของฉันคือ: มีวิธีรวม 'somefile.php' จาก 'Example.class.php' หรือไม่


person Marnix Bouhuis    schedule 17.03.2016    source แหล่งที่มา
comment
คุณสามารถใช้ระบบ php autoloader ซึ่งช่วยลดปัญหาประเภทนี้ได้อย่างมาก php.net/manual/en/ language.oop5.autoload.php คุณยังสามารถใช้ค่าคงที่ที่มีเส้นทางสัมบูรณ์ไปยังแอปของคุณที่คุณเพิ่มไว้ข้างหน้าเส้นทางรวมได้   -  person kerwan    schedule 17.03.2016


คำตอบ (2)


คุณสามารถใช้ค่าคงที่ __DIR__ ใน PHP

ไดเร็กทอรีของไฟล์ หากใช้ภายในการรวม ไดเร็กทอรีของไฟล์ที่รวมไว้จะถูกส่งกลับ ซึ่งเทียบเท่ากับ dirname(__FILE__) ชื่อไดเร็กทอรีนี้ไม่มีเครื่องหมายทับต่อท้าย เว้นแต่จะเป็นไดเร็กทอรีราก

(https://secure.php.net/manual/en/language.constants.predefed.php)

นั่นจะเป็น:

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

ด้วยวิธีนี้ คุณจะใช้เส้นทางสัมพัทธ์ไปยังไฟล์

person Matthijs    schedule 17.03.2016

คุณสามารถรับเส้นทางปัจจุบันที่มีไฟล์อยู่ได้

ในโครงสร้างที่คุณกำลังทำงานอยู่ คุณสามารถเขียนคลาสตัวอย่างใหม่ได้:

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

ค่าคงที่ __DIR__ จะให้โฟลเดอร์ปัจจุบันแก่คุณ

person Blaatpraat    schedule 17.03.2016