Tìm kiếm nhanh

Hướng dẫn gọi class ngoài thư mục vendor theo chuẩn PSR-4

Thảo luận trong 'Các Vấn Đề Khác' đăng bởi dangdinhtu, 07/09/2016 00:00.

  • dangdinhtu

    dangdinhtu Đặng Đình Tứ

    Điều hành viên Quản trị diễn đàn

     làm được việc này bạn cần làm như sau

    Có 2 cách tạo $loader để add thêm đường dẫn tới thư mục chứa class ngoài thư mục vender mặc định của Nukeviet

    Cách 1: Gán $loader vào trong file

    includes/mainfile.php

    Tìm đoạn 

    require NV_ROOTDIR . '/vendor/autoload.php';

    Thay thế bằng

    $loader = require NV_ROOTDIR . '/vendor/autoload.php';

    Cách 2: Ở đây mình ví dụ với module sample chẳng hạn
    Tại khu vực module của bạn muốn gọi nhiều class dạng autoload
    Bạn sẽ tiến hành khởi tạo $loader bằng cách mở file 

    modules/sample/admin.funcstions.php

    Thêm đoạn code 

    $loader = new \Composer\Autoload\ClassLoader();

    vào dưới dòng gần giống như này 

    if (! defined('NV_ADMIN') or ! defined('NV_MAINFILE') or ! defined('NV_IS_MODADMIN')) {
        die('Stop!!!');
    }


    Như vậy là xong bước khởi tạo $loader. Tiếp theo ta thêm đường dẫn tới thư mục chứa class theo chuẩn  PSR-4 mà anh Nukeviet đang hướng tới.

    P/S cách gọi này phải gọi lại 2 lần cái autoload hao tốn tài nguyên hiệu suất không cao. rườm rà

    $loader->setPsr4("Demo\\", NV_ROOTDIR . '/modules/' . $module_file . '/demo'));

    Bước tiếp theo ta tiến hành tạo file 

    modules/sample/demo/Demo.php

    Chèn nội dung mẫu sau

    <?php
    namespace Sample;
    class Test  
    { 
         
        public function getnumber()
        {
            return 10;
        }
    }

     

    Tiến hành gọi hàm tại các functions xử lý thông tin của hệ thống Nukeviet

    $Test = new Sample\Test();
    var_dump( $Test->getnumber() );

    trong nhiều trường hợp gọi hàm lặp loop class

    việc sử dụng chuẩn PSR-4 khá khó khăn và phức tạp

     

    Bạn nên tham khảo thêm chuẩn PSR-0 bằng cách sau

     

    $loader->add( '', NV_ROOTDIR . '/modules/' . $module_file . '/class');

     

     

    Bài hướng dẫn của mình tới đây là kết thúc. Chúc các bạn thành công. 

    Nếu gặp phải vấn đề về code đừng ngại comment tại đây mình sẽ xử lý

     
    Lần sửa cuối bởi bạn: 07/09/2016 00:05
    anhyeuviolet thích điều này.

Chia sẻ trang này

Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây