Tôi có một lớp học trong php được gọi là "SEO_URL". Tại một điểm trong lớp mà tôi có điều nàylớp php không tìm thấy khi nó được bao gồm
$class_name = "cPath_SEO_URL";
return $class_name::href();
và tôi nhận được
Fatal error: Class 'cPath_SEO_URL' not found in
...\includes\classes\seo.class.php on line 52
Vấn đề là tôi đã bao gồm lớp trên đầu trang của SEO_URL
include_once(/path/to/my/class);
class SEO_URL{
}
và tôi nhận được lỗi đó .
Tuy nhiên, khi tôi mã hóa cứng lớp ở đầu lớp học SEO_URL nó hoạt động. Vì vậy, điều này hoạt động.
class cPath_SEO_URL{
function cPath_SEO_URL(){}
function href() { return "CPathHref"; }
}
class SEO_URL{
...
$class_name = "cPath_SEO_URL";
return $class_name::href();
...
}
và điều này không
include_once(/path/to/my/class);
class SEO_URL{
...
$class_name = "cPath_SEO_URL";
return $class_name::href();
...
}
tôi đang cố gắng này trong osCommerce.
Tại sao lại như vậy?
Bạn có tắt cảnh báo PHP không? PHP sẽ ném một ngoại lệ E_WARNING khi nó không thể tìm thấy tệp lớp của bạn, điều này thường sẽ được xuất ra trình duyệt nhưng nó có thể bị vô hiệu hóa. – JamesHalsall
Không phạm tội, nhưng 90% đoán đoán của tôi là tệp lớp không chính xác. Bạn nên sử dụng require_once thay vì include_once để một lỗi khi đọc nó (như tên tệp sai/quyền truy cập không đầy đủ) gây ra lỗi php gây tử vong thay vì chỉ là cảnh báo. – phihag
+1 cho @phihag để nói rằng bạn nên sử dụng 'require_once' thay vì' include_once' trong đó chương trình của bạn không thể sống mà không có tệp được bao gồm. Điều này sẽ cung cấp cho bạn các lỗi hữu ích khi yêu cầu thất bại chứ không phải là lỗi lạ khi bạn cố gắng sử dụng các chức năng liên quan. – Spudley