2013-08-03 54 views
12

Tôi đang cố gắng tạo tệp config.php xác định biến toàn cục chứa đường dẫn đến thư mục có tên là "projectfiles". Ý tưởng là bất kỳ tệp nào có thể trỏ đến thư mục này bất kể nó nằm ở đâu trong cây tệp.sử dụng php __DIR__

Tôi có thể sử dụng __DIR__ cho mục đích này không? Ai đó có thể sẵn sàng cho tôi một ví dụ về cách thức hoạt động của nó? Tôi đã nghĩ đến một cái gì đó như sau:

Tôi muốn xác định một thư mục ở đây: trong file /config.php

$projectfiles = __DIR__("projectfiles/") 

Sau đó, tôi muốn có một tập tin thư viện để có thể sử dụng biến này trong /venders/library/generalfunctions.php tập tin

include("../../../config.php"); 
$file = $projectfiles/testfile.php 

Đề xuất?

Trả lời

0

Dường như kiến ​​trúc của ứng dụng này là ít hơn tối ưu, nhưng mà không biết nữa, tôi không thể bình luận gì về điều đó ..

Tôi đề nghị xác định nó như là một hằng số do đó nó không thể được thay đổi và có sẵn bất kể phạm vi.

define('PROJECTFILES',__DIR__.'/projectfiles/');

Giả sử:
/config.php
/projectfiles/include_me.php

include(PROJECTFILES.'include_me.php

Hãy ghi nhớ rằng __DIR__ sẽ tham khảo các thư mục đó config.php là trong. Nếu config.php là thư mục mẹ của projectfiles thì abov e sẽ hoạt động.

3

__DIR__ chắc chắn là những gì bạn đang tìm kiếm. Sử dụng nó để cung cấp đường dẫn tương đối cho các tệp được yêu cầu. Tôi rất muốn đề xuất sử dụng require_once hoặc include_once cho tất cả các tệp thư viện.

if(!defined(__DIR__)) define(__DIR__, dirname(__FILE__)); 
require_once(__DIR__ . '/../../../config.php'); 
. 
. 
. 
// you code here 

Sử dụng dòng đầu tiên đảm bảo bạn sẽ không gặp rắc rối với PHP 5.2 trở lại. Điều này sẽ cho phép bạn bao gồm các tệp dựa trên cấu trúc thư mục thay vì liên quan đến tập lệnh được gọi.