2016-04-20 21 views
5

Đây là lần đầu tiên tôi thử tải gói Composer không sử dụng nhà cung cấp dịch vụ Laravel hoặc mặt tiền.Không thể tải gói Composer Non-Laravel

Tôi cố gắng để cài đặt gói này: https://github.com/mollie/mollie-api-php

Tôi đã làm theo các bước để cài đặt các gói với Composer.

Ở phía trên của bộ điều khiển của tôi, tôi nói thêm:

require_once base_path('vendor/Mollie/API/Client.php'); 

tôi nhận được lỗi sau:

main(): Failed opening required '../vendor/Mollie/API/Client.php' (include_path='.:/Applications/MAMP/bin/php/php7.0.0/lib/php')

Nó không thể tìm thấy tập tin. Mặc dù đường dẫn trong lỗi là đường dẫn đặt lớp. Có nhiều bước tôi nên làm không?

Cấu trúc của gói:

enter image description here

composer.json từ gói:

"autoload": { 
    "psr-0": { 
     "": "src/" 
    } 

Cập nhật: điều khiển của tôi có không gian tên này

namespace App\Http\Controllers; 

Vì vậy, khi tôi chỉ cố gắng để mới lên lớp của tôi rõ ràng là không thể tìm thấy rằng lớp bên trong không gian tên đó. Vậy làm thế nào để tôi bỏ qua không gian tên cho 1 lớp

Bởi vì điều này sẽ không làm việc bên trong điều khiển này:

$mollie = new Mollie_API_Client; 
+5

bạn không cần yêu cầu gói, người soạn sẽ tải nó cho bạn. Chỉ cần sử dụng nó – 0x13a

+0

Thông thường tôi sẽ sử dụng 'use' với không gian tên cho lớp tôi muốn, gói này dường như không có lớp của nó không gian tên mặc dù? – haakym

+1

Xin lưu ý trong readme: * Yêu cầu bộ nạp tự động đi kèm. Nếu bạn đang sử dụng Composer, bạn có thể bỏ qua bước này. * Vì vậy, chỉ cần mới nó lên để sử dụng nó – haakym

Trả lời

5

Như đã đề cập trong các ý kiến, Composer xử lý tự động load cho bạn - bằng tay lại đòi hỏi nó isn' cần thiết và thực tế có thể gây ra vấn đề.

my controller has a namespace, so it tries to load that class from the namespace, how do i ignore it for 1 class?

Bạn có thể tham khảo các lớp học với một \ hàng đầu, ví dụ: new \Mollie_API_Client, mà sẽ cho PHP để tìm kiếm trong thư mục gốc thay vì không gian tên của điều khiển của bạn.

Bạn cũng có thể đặt use Mollie_API_Client; ở đầu tệp để thực hiện điều tương tự. Bạn sẽ thấy các câu lệnh use ở đầu rất nhiều tệp Laravel vì lý do này.

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