THẢO LUẬN

thg 6 14, 2018 6:41 SA

nice

0
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 6 14, 2018 6:32 SA

Nếu cần thì cmt mail mình share cho

0
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 6 14, 2018 6:32 SA

ax mình share free mà..

0
thg 6 14, 2018 6:28 SA

cám ơn bạn đã để ý phần đó, thực ra chuẩn thì chỗ đó mình tính là để message: '' mục đích để giá trị ban đầu là chuỗi rỗng, cũng không nhớ sao lại để thành đối tượng như vậy 😃. Nhưng dù để như thế thì vẫn cho cùng kết quả nhé bạn. Mình đã sửa lại thành string cho dễ hiểu hơn rồi bạn à 😃

0
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 6 14, 2018 6:27 SA

mục đích của mình là làm theo và biết cách sửa nội dung hiển thị, mình có phải IT đâu mà cần quan tâm làm gì, cảm ơn bạn đã comment 😃

0
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 6 14, 2018 6:25 SA

Cám ơn bạn, mình đã down toàn bộ video về máy tuần trước 😄, chỉ còn cách là làm theo

+1

すごい

0

@vinhnguyen Trên trang tài liệu chính thống của mình, Laravel không hướng dẫn cách dùng phương thức này. Nhưng em đọc bài viết của anh https://viblo.asia/p/laravel-service-container-in-depth-tips-to-customize-your-application-RQqKLnqNl7z#_ioc--di-3 nên em mới biết về nó và cách sử dụng. Em hiểu các nguyên tắc mà anh đề cập. Em có nói "Laravel là framework em yêu thích nhất và thực tế nó vẫn hoạt động rất "ngon" với core như trên". Em chỉ tò mò một chút về lý do mà Laravel đã làm. Em thấy nó thật khó kiểm soát.

Ông Taylor bận lắm, không có thời gian giải thích mấy thắc mắc "vớ vẩn" của em đâu. 😐 Và vì Laravel vẫn chạy ngon đó thôi.

Em cảm ơn.

+2

@huukimit Tôi có một ví dụ như sau. Giả sử, tôi không thích dùng Illuminate\Foundation\Application mặc đinh của Laravel.

Tôi khai báo một class như sau.

// Chỉ implements interface \Illuminate\Contracts\Foundation\Application thôi nhé, không có rebinding.
class MyApplication implements \Illuminate\Contracts\Foundation\Application
{
      // code
}

Đây là constrcutor của ServiceProvider, chú ý biến app.

/**
     * Create a new service provider instance.
     *
     * @param  \Illuminate\Contracts\Foundation\Application  $app
     * @return void
     */
public function __construct($app)
{
    $this->app = $app;
}

Tôi khởi tạo thế này:

$app = new MyApplication;

$provider = new \Illuminate\Auth\AuthServiceProvider($app);

$provider->register(); // chắc chắn sẽ báo lỗi "call to undefined method "
0

@huukimit Có lẽ do cách trình bày của tôi khó hiểu quá. 😐

Tôi nói lại nhé, phương thức rebinding chỉ tồn tại trên instance của Illuminate\Container\Container hoặc Illuminate\Foundation\Application. Nhưng trong bối cảnh của class ServiceContainer đặt ngoài "project Laravel". Bạn chú ý nhé, tôi nhấn mạnh vào việc "Đặt ngoài project Laravel". Nghĩa là nếu bạn nhìn vào một class ServiceContainer một cách riêng lẻ, chỉ có class này thôi, bạn sẽ thấy rằng app là một implementation của interface Illuminate\Contracts\Foundation\Application (nơi không có phương thức nào tên là rebinding cả). Bạn hiểu chứ?

0
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 6 14, 2018 4:16 SA

😃) cám ơn bạn, mình ko mua đâu ạ

0

@quynh001 À mình hiểu rồi, tức là bạn muốn hỏi rằng tại sao không đặt rebinding vào trong interface Container chứ không phải là Tại sao Laravel ServiceProvider gọi phương thức $this->app->rebinding() "không tồn tại"? Vì rõ ràng method này tồn tại mà 😄

0

@huukimit Cảm ơn phản hồi từ bạn. Như tôi đã nói, trong quá trình run-time, Laravel inject một instance của \Illuminate\Foundation\Application vào ServiceContainer nên tôi hiểu tại sao lại gọi được $this->app->rebinding() như vậy.

Tôi đã sửa lại tiêu đề để phù hợp hơn. Tôi sẽ cố gắng giải thích lại rõ hơn. ServiceContainer khai báo thuộc tính "app" là một implementation của Illuminate\Contracts\Foundation\Application (interface này không có phương thức rebinding). Như vậy, chỉ xét riêng trong bối cảnh class này, tôi nghĩ chỉ nên gọi những phương thức trên "app" mà đã được khai báo trong interface đó.

rebinding, refresh là đặc trưng riêng mà Laravel Container định nghĩa, những sự kiện này tôi thấy có thể áp dụng như resolving và afterResolving vậy. Do đó, việc bổ sung nó vào interface \Illuminate\Contracts\Container\Container là phù hợp theo quan điểm của tôi.

+2
thg 6 14, 2018 3:48 SA

ví dụ minh họa rất hay, cảm ơn bạn

+1
thg 6 14, 2018 3:37 SA

Bạn thực hành chút là hiểu ngay liền ấy mà 😄

0
thg 6 14, 2018 3:33 SA

hiểu chết liền .... ặc ặc. Có bài viết nào cơ bản hơn bài này không bạn. Tks bạn nhiều !

0
thg 6 14, 2018 2:08 SA

Tuyệt vời !!!

Bài viết rất hay và dễ hiểu. Xin cảm ơn.

0
thg 6 13, 2018 3:17 CH

ở ví dụ thứ 3 sao lại để message như này ạ message: {

}

+1
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí