Hướng dẫn php get class file path - php lấy đường dẫn tệp lớp

(Php 5, Php 7, Php 8)

ReflectionClass :: getfilename - Nhận tên tệp của tệp trong đó lớp đã được xác địnhGets the filename of the file in which the class has been defined

Sự mô tả

publicReflectionClass :: getfilename (): chuỗi | sai ReflectionClass::getFileName(): string|false

Nhận tên tệp của tệp trong đó lớp đã được xác định.

Thông số

Chức năng này không có tham số.

Trả về giá trị

Trả về tên tệp của tệp trong đó lớp đã được xác định. Nếu lớp được xác định trong lõi PHP hoặc trong phần mở rộng PHP, false sẽ được trả về.false is returned.

Xem thêm

  • ReflectionClass :: getExtensionName () - lấy tên của tiện ích mở rộng xác định lớp

Có bất kỳ phản xạ/hướng nội/ma thuật trong PHP sẽ cho phép bạn tìm thấy tệp PHP nơi một lớp (hoặc hàm) cụ thể được xác định không?

Nói cách khác, tôi có tên của một lớp PHP hoặc một đối tượng khởi tạo. Tôi muốn chuyển điều này cho một cái gì đó (chức năng, lớp phản xạ, v.v.) sẽ trả về đường dẫn hệ thống tệp nơi lớp được xác định.something (function, Reflection class, etc.) that would return the file system path where the class was defined.

/path/to/class/definition.php

Tôi nhận ra rằng tôi có thể sử dụng (get_included_files()) để có được danh sách tất cả các tệp đã được đưa vào cho đến nay và sau đó phân tích tất cả chúng theo cách thủ công, nhưng đó là rất nhiều quyền truy cập hệ thống tệp cho một lần thử.

Tôi cũng nhận ra rằng tôi có thể viết một số mã bổ sung trong cơ chế __autoload của chúng tôi lưu trữ thông tin này ở đâu đó. Tuy nhiên, việc sửa đổi __autoload hiện tại là vượt quá giới hạn trong tình huống tôi có trong tâm trí.

Nghe về các tiện ích mở rộng có thể làm điều này sẽ rất thú vị, nhưng cuối cùng tôi thích một cái gì đó có thể chạy trên cài đặt "cổ phiếu".

Hướng dẫn php get class file path - php lấy đường dẫn tệp lớp

Cú pháp: $ fileName = pathInfo (đường dẫn); Ví dụ: Ví dụ này giải thích hàm pathInfo () sẽ trả về thông tin về một đường dẫn.

Sau đó, & nbsp; tôi đã tìm thấy về ReflectionClass, & nbsp; & nbsp; báo cáo thông tin về một lớp.

Bạn có thể đọc thêm chi tiết về ReflectionClass từ php.net.

Đây là cách lấy đường dẫn tệp từ tên lớp

$autoloader_reflector = new ReflectionClass("RT_WP_Autoload");
$class_file_nanme = $autoloader_reflector->getFileName();
echo dirname($class_file_nanme);

Điều này giống như & nbsp; API phản ánh & nbsp; trong java, & nbsp; Có một số ví dụ phản ánh tốt để bạn bắt đầu API phản ánh trong java tại http://docs.oracle.com/javase/tutorialreflection api in java, There are some good reflection examples to get you started reflection api in java at http://docs.oracle.com/javase/tutorial/reflect/index.html

Trong bài viết này, chúng ta sẽ xem cách lấy tên tệp từ đường dẫn trong PHP, cùng với việc hiểu được việc triển khai của nó thông qua các ví dụ. Chúng tôi đã đưa ra đường dẫn đầy đủ và chúng tôi cần tìm tên tệp từ đường dẫn tệp. Đối với điều này, chúng tôi sẽ theo dõi dưới 2 phương pháp:

  • Sử dụng hàm basename ()
  • Sử dụng hàm pathinfo ()

Đầu vào: path = /testweb/var/www/mywebsite/htdocs/home.phpoutput: home.php path = /testweb/var/www/mywebsite/htdocs/home.php
Output : home.php

Đầu vào: path = /testweb/var/www/mywebsite/htdocs/abc.txtoutput: abc.txt path = /testweb/var/www/mywebsite/htdocs/abc.txt
Output : abc.txt

Chúng tôi sẽ hiểu cả hai chức năng với sự trợ giúp của các ví dụ.

Phương pháp 1: Sử dụng hàm basename ():basename() function:

Hàm basename () là một hàm sẵn có trả về tên cơ sở của tệp nếu đường dẫn của tệp được cung cấp dưới dạng tham số cho hàm basename (). & Nbsp;

Syntax:

$filename = basename(path, suffix);

Đường dẫn là một trường bắt buộc chỉ định đường dẫn sẽ được kiểm tra. & NBSP; Hậu tố là một trường tùy chọn chỉ định một phần mở rộng tệp. Nếu tên tệp có phần mở rộng tệp này, phần mở rộng tệp sẽ không hiển thị.

Ví dụ: Ví dụ này mô tả việc sử dụng hàm basename () trả về tên cơ sở của tệp.: This example describes the use of the basename() function that returns the base name of the file.

PHP

________số 8

  ____10

$autoloader_reflector = new ReflectionClass("RT_WP_Autoload");
$class_file_nanme = $autoloader_reflector->getFileName();
echo dirname($class_file_nanme);
1
$autoloader_reflector = new ReflectionClass("RT_WP_Autoload");
$class_file_nanme = $autoloader_reflector->getFileName();
echo dirname($class_file_nanme);
2

  

$autoloader_reflector = new ReflectionClass("RT_WP_Autoload");
$class_file_nanme = $autoloader_reflector->getFileName();
echo dirname($class_file_nanme);
5
$autoloader_reflector = new ReflectionClass("RT_WP_Autoload");
$class_file_nanme = $autoloader_reflector->getFileName();
echo dirname($class_file_nanme);
1
$autoloader_reflector = new ReflectionClass("RT_WP_Autoload");
$class_file_nanme = $autoloader_reflector->getFileName();
echo dirname($class_file_nanme);
7
$autoloader_reflector = new ReflectionClass("RT_WP_Autoload");
$class_file_nanme = $autoloader_reflector->getFileName();
echo dirname($class_file_nanme);
8
$autoloader_reflector = new ReflectionClass("RT_WP_Autoload");
$class_file_nanme = $autoloader_reflector->getFileName();
echo dirname($class_file_nanme);
0

  

$filename = basename(path, suffix);
2
$autoloader_reflector = new ReflectionClass("RT_WP_Autoload");
$class_file_nanme = $autoloader_reflector->getFileName();
echo dirname($class_file_nanme);
1
$autoloader_reflector = new ReflectionClass("RT_WP_Autoload");
$class_file_nanme = $autoloader_reflector->getFileName();
echo dirname($class_file_nanme);
7
$autoloader_reflector = new ReflectionClass("RT_WP_Autoload");
$class_file_nanme = $autoloader_reflector->getFileName();
echo dirname($class_file_nanme);
8
$autoloader_reflector = new ReflectionClass("RT_WP_Autoload");
$class_file_nanme = $autoloader_reflector->getFileName();
echo dirname($class_file_nanme);
0
$filename = basename(path, suffix);
7
$filename = basename(path, suffix);
8
$filename = basename(path, suffix);
0

  

home.php
home
1
$autoloader_reflector = new ReflectionClass("RT_WP_Autoload");
$class_file_nanme = $autoloader_reflector->getFileName();
echo dirname($class_file_nanme);
5
home.php
home
3
home.php
home
4
$autoloader_reflector = new ReflectionClass("RT_WP_Autoload");
$class_file_nanme = $autoloader_reflector->getFileName();
echo dirname($class_file_nanme);
3

  

home.php
home
1
$filename = basename(path, suffix);
22

$filename = pathinfo(path);
0

Output:

home.php
home

Phương pháp 2: Sử dụng hàm pathinfo ():pathinfo() function:

PathInfo () là một hàm sẵn có được sử dụng để trả về thông tin về đường dẫn sử dụng mảng kết hợp hoặc một chuỗi IE., Nó sẽ tạo một mảng với các phần của đường dẫn chúng ta muốn sử dụng.

Syntax:

$filename = pathinfo(path);

Ví dụ: Ví dụ này giải thích hàm pathInfo () sẽ trả về thông tin về một đường dẫn. Ở đây, chúng tôi sẽ sử dụng $ fileName [‘basename,], khi chúng tôi muốn truy cập tên tệp.: This example explains the pathinfo() function that will return information about a path. Here, we will use $filename[‘basename’], when we want to access the file name.

PHP

________số 8

  ____10

$autoloader_reflector = new ReflectionClass("RT_WP_Autoload");
$class_file_nanme = $autoloader_reflector->getFileName();
echo dirname($class_file_nanme);
1
$autoloader_reflector = new ReflectionClass("RT_WP_Autoload");
$class_file_nanme = $autoloader_reflector->getFileName();
echo dirname($class_file_nanme);
2

$filename = pathinfo(path);
0

Output:

test.php

Làm thế nào để có được đường dẫn của tệp trong PHP?

Cú pháp: $ fileName = pathInfo (đường dẫn); Ví dụ: Ví dụ này giải thích hàm pathInfo () sẽ trả về thông tin về một đường dẫn.$filename = pathinfo(path); Example: This example explains the pathinfo() function that will return information about a path.

Làm thế nào để có được đường dẫn tệp và tên tệp trong PHP?

Tên tệp đầy đủ hiện tại được giữ trong biến hệ thống $ _Server ['PHP_elf']. Bạn có thể sử dụng hàm basename () để lấy tên tệp mà không có đường dẫn; hoặc basename (đường dẫn, hậu tố) để lấy tên tệp mà không cần mở rộng.use function basename() to get the filename without the path; or basename(path, suffix) to get the filename without the extension.

Làm cách nào để tìm ra tên lớp của một tệp?

Bạn có thể làm điều này theo hai cách:..
Giải pháp phức tạp: Mở tệp và thông qua regex trích xuất tên lớp (như / class ([a-za-z_ \ x7f- \ xff] [a-za-z0-9_ \ x7f- \ xff]*) /).
Giải pháp đơn giản: Đặt tên cho tất cả các tệp PHP của bạn với tên lớp chứa (ví dụ: lớp testfoo trong tệp testfoo. PHP hoặc testfoo. class. PHP).

Làm gì :: Lớp làm trong PHP?

Someclass :: class sẽ trả lại tên đủ điều kiện của someclass bao gồm cả không gian tên.Tính năng này đã được thực hiện trong Php 5.5.Nó rất hữu ích cho 2 lý do.Bạn có thể sử dụng từ khóa sử dụng để giải quyết lớp của mình và bạn không cần phải viết tên lớp đầy đủ.return the fully qualified name of SomeClass including the namespace. This feature was implemented in PHP 5.5. It's very useful for 2 reasons. You can use the use keyword to resolve your class and you don't need to write the full class name.