2009-04-02 31 views
8

Tôi đang làm một số tài liệu tự động do nhà sản xuất, vì tôi có một codebase không phải là tiêu chuẩn trong cách bố trí của nó, và tôi đã tự hỏi cách tốt nhất là đọc một tệp PHP và lấy nội dung của khối nhận xét. Cách duy nhất tôi có thể nghĩ để làm là mở tập tin và đọc nó theo từng dòng, nhưng nghĩ rằng có lẽ có một số ma thuật tích hợp sẽ phân tích tài liệu cho tôi, tương tự như các chức năng Reflection.Làm thế nào để đọc các khối bình luận trong PHP?

Cách bố trí cơ bản của mỗi tập tin là như thế này:

<?php // $Id$ 
/** 
* Here is this script's documentation, with information in pseudo-javadoc 
* type tags and whatnot. 
* 
* @attr something some information about something 
* @attr etc   etc etc 
*/ 
// rest of the code goes here. 

Điều quan trọng cần lưu ý là những tập tin này không có bất kỳ chức năng hoặc lớp được định nghĩa trong đó. Các bình luận liên quan đến toàn bộ kịch bản.

Trả lời

15

Kiểm tra Tokenizer.

Để có được tất cả các ý kiến ​​trong một file có tên test.php bạn muốn làm:

$tokens = token_get_all(file_get_contents("test.php")); 
$comments = array(); 
foreach($tokens as $token) { 
    if($token[0] == T_COMMENT || $token[0] == T_DOC_COMMENT) { 
     $comments[] = $token[1]; 
    } 
} 
print_r($comments); 
2

Có một cái nhìn tại Reflection API mà đi kèm với PHP5, cụ thể hơn getDocComment():

PHP 5 đi kèm với phản ánh đầy đủ API bổ sung khả năng các lớp kỹ sư đảo ngược, giao diện, các chức năng và phương pháp cũng như các tiện ích mở rộng . Ngoài ra, API phản chiếu cũng cung cấp các cách truy xuất nhận xét tài liệu cho các hàm, các lớp và phương pháp.

Ngoài ra, tùy thuộc vào kích thước của codebase của bạn, bạn có thể làm việc ít hơn bằng cách sửa đổi nhận xét của mình để phù hợp với cú pháp phpDocumentor, có vẻ như khá gần.

+1

nó thực sự là một cách bố trí rất lạ và đòi hỏi một lượng rất cụ thể tôi sợ. Các hàm phản chiếu dường như chỉ áp dụng cho các hàm, các lớp, các đối tượng, vv Bạn có thể chuyển nó thành một tệp để phân tích cú pháp không? – nickf

+0

+1 phpDocumentor, đặc biệt nếu mã đã được định dạng cho nó. – jmucchiello

1

Với getDocComment() nếu có nhiều ý kiến ​​doc, gặp phải cuối cùng áp dụng

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