phpStorm และฉันยอมรับว่านี่เป็นเรื่องบ้า แต่เส้นทางไฟล์ "ผิด" ทำงานได้ในขณะที่เส้นทาง "ถูกต้อง" ล้มเหลว โครงสร้างพื้นฐาน
|
|------classes(directory)
| |
| |
| Person.php
|
|------include(directory)
| |
| |
| db-connect.inc.php
| autoloader.inc.php
| helper.inc.php
|
|
|index.php
|etc.php
ในดัชนีฉันใช้: (1)
include_once "include/autoloader.inc.php";
include_once "include/db-connect.inc.php";
include_once "include/helper.inc.php";
และใน Person.php ฉันคาดว่าจะใช้: (2)
include_once "../include/autoloader.inc.php";
include_once "../include/db-connect.inc.php";
include_once "../include/helper.inc.php";
แต่นั่นก็คือ:
"Warning: include_once(../include/autoloader.inc.php): failed to open stream:
No such file or directory in C:\xampp\htdocs\dummy\classes\Person.php on line 2"
แปลกประหลาด (3)
include_once "/../include/autoloader.inc.php";
include_once "/../include/db-connect.inc.php";
include_once "/../include/helper.inc.php";
ใช้งานได้และแปลกประหลาดยิ่งกว่านั้นด้วย (4)
include_once "include/autoloader.inc.php";
include_once "include/db-connect.inc.php";
include_once "include/helper.inc.php";
แม้ว่าเราจะอยู่ระดับไดเร็กทอรีหนึ่งระดับก็ตาม!
phpStorm ตั้งค่าสถานะ 3 และ 4 เป็นข้อผิดพลาด (ระบุว่า "ไม่พบเส้นทางรวม/autoloader.inc.php" และ "ไม่ได้รับการแก้ไขนิพจน์รวม") ในขณะที่ (2) ซึ่งเป็นสิ่งที่ฉันคิดว่า "ถูกต้อง" ได้รับสีเขียวขนาดใหญ่ที่ดี ทำเครื่องหมายแต่ไม่สำเร็จเมื่อแก้ไขจุดบกพร่อง หรือหากเข้าถึงโดยตรงผ่าน http://localhost ฯลฯ
ฉันมักจะต่อสู้กับเส้นทางเหล่านี้ แต่ทำไม phpStorm และฉันจึงเห็นด้วยและโลกแห่งความเป็นจริงก็ปฏิเสธ!
เดาว่าฉันจะต้องใส่ $_SERVER['DOCUMENT_ROOT']
ลงไปให้ทั่ว (ง่ายกว่ามากเมื่อใช้ Storm แทนที่จะใช้มือยาว!) แต่ก็ยังเจ็บอยู่!
include_once __DIR__ . "/../include/autoloader.inc.php";
-- มีความน่าเชื่อถือมากกว่ามาก เพราะด้วยวิธีนี้ คุณจะไม่ให้โอกาส PHP ตีความมันผิด (เช่น เพราะคุณอาจมีความซับซ้อนinclude_path
เป็นต้น) ตามหลักการแล้ว ฉันอยากจะแนะนำให้ใช้คลาส, PSR-4 และการโหลดอัตโนมัติของคลาส - ในกรณีเช่นนี้ มีเพียงไม่กี่รายการที่รวม/ต้องการ และส่วนที่เหลือจะถูกโหลดโดยอัตโนมัติ - person LazyOne   schedule 28.09.2015