2012-08-12 28 views
6

Tôi đang sử dụng exec() để thực hiện một tệp nhưng tệp ở trong một lớp học, tôi đọc thêm về argv nhưng nó đã gây nhầm lẫn. Tôi cần phải làm cho nó hoạt động bên trong một lớp học.

Nó nói:

Xin lưu ý rằng, $ argv và $ argc cần phải được khai báo toàn cầu, trong khi cố gắng truy cập trong vòng một phương pháp học

trên php.net

+0

Và mục tiêu là gì? Đối số là để thực hiện giao diện điều khiển. – Stony

Trả lời

20

Điều đó có nghĩa là argc/argv không phải là superglobals - chúng chỉ hiển thị ở ngữ cảnh cấp cao nhất của tập lệnh PHP, vì vậy ...

<?php 

$x = $argv[1]; // works 

class foo { 
    function bar() { 
     echo $argv[1]; // undefined 
    } 
    function baz() { 
     global $argv; 
     echo $argv[1]; // works 
    } 
} 
+0

khắc phục sự cố! thankk you – user1588878

+1

Điều này có thể được thực hiện bằng cách sử dụng '$ GLOBALS ['argv'] ...' là tốt. Trong trường hợp sao chép một biến vào phạm vi hiện tại của bạn hoặc cố gắng làm cho chúng trở thành siêu kết quả không mong muốn. – ThorSummoner

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