2012-02-23 33 views
7

Có một sence để làm một cái gì đó giống như

$dir = realpath(dirname(__FILE__)); 
// or for php 5.3+: 
$dir = realpath(__DIR__) 

Hoặc hằng kỳ diệu như DIRFILE luôn trả về đường dẫn tuyệt đối, vì vậy realpath là không cần thiết?

Trả lời

8

Bạn không cần realpath().

Các tài liệu của __FILE__:

Đường dẫn đầy đủ và tên tập tin của tập tin. Nếu được sử dụng bên trong bao gồm, tên của tệp được bao gồm sẽ được trả lại. Kể từ PHP 4.0.2, __FILE__ luôn chứa đường dẫn tuyệt đối với các liên kết được giải quyết trong khi ở các phiên bản cũ hơn có chứa đường dẫn tương đối trong một số trường hợp.

Vì vậy __FILE__ trả về một đường dẫn tuyệt đối =>realpath() không cần thiết

Và nếu bạn sử dụng __DIR__:

Thư mục của tập tin. Nếu được sử dụng bên trong bao gồm, thư mục của tệp được bao gồm sẽ được trả lại. Điều này tương đương với tên đệm (__FILE__). Tên thư mục này không có dấu gạch chéo theo sau trừ khi đó là thư mục gốc. (Added trong PHP 5.3.0.)

__DIR__ cũng trả về một đường dẫn tuyệt đối vì dirname() không cắt đứt phần tuyệt đối của con đường __FILE__ =>realpath() không cần thiết

+2

Hãy ghi nhớ 'realpath 'vẫn hữu ích trong các tình huống mà bạn sẽ sử dụng kết quả' __DIR__' hoặc '__FILE__' làm tiền tố cho một URI. Ví dụ '$ include = realpath (__ DIR__. '/ Path/to/file');' Tuy nhiên như câu trả lời mô tả bằng cách sử dụng realpath chỉ với '__FILE__' hoặc' __DIR__' là thừa. – fyrye

Các vấn đề liên quan