Thắc mắc về Repository trong laravel
Check comment của chủ tus thì có thể thấy, bạn chỉ dùng UserRepository chứ ko phải là UserRepositoryInterface. ở constructor. Điều này có nghĩa là bạn đang thông báo cho App laravel 1 cái implement cụ thể, và App sẽ tự tạo ra cho bạn 1 Repository cho bạn, như cách mà bạn xài Request hay Model.
Ở AppSerivceProvider
$this->app->bind(
\App\Services\Company\ICompanyService::class,
\App\Services\Company\VnCompanyService::class
);
Là nơi bạn sẽ khai những service sẽ được nạp vào app lúc boot lên. Laravel có cái hay là khi bạn khai báo 1 interface và 1 implement của nó, thì nơi nào cần bind interface đó nó sẽ gọi đến implement của nó.
protected ICompanyService $companyService;
public function __construct(ICompanyService $companyService)
{
$this->companyService = $companyService;
}
public function getList(Request $request)
{
$response = $this->companyService->getCompaniesInfoList($request);
return $this->responseArray($response);
}
Điều này có ý nghĩa, khi ở controller bạn sẽ sử dụng interface để tương tác chứ ko dùng implemnt trực tiếp. Vd nhé. Như cách của bạn mình sẽ bind trực tiếp VnCompanyService vào controller. như thế này:
protected VnCompanyService $companyService;
public function __construct(VnCompanyService $companyService)
{
$this->companyService = $companyService;
}
public function getList(Request $request)
{
$response = $this->companyService->getCompaniesInfoList($request);
return $this->responseArray($response);
}
Tuy nhiên 1 ngày nào đó, sếp kêu mình đổi lại để xài cho các cty ở Japan và mình tạo ra 1 service là JaCompanySerivce. và việc mình cần làm là đổi hết bất cứ chỗ nào là Vn -> Ja. oh no, đổi quá nhiều chỗ. và còn nguy hiểm nữa
protected JaCompanyService $companyService;
public function __construct(JaCompanyService $companyService)
{
$this->companyService = $companyService;
}
public function getList(Request $request)
{
$response = $this->companyService->getCompaniesInfoList($request);
return $this->responseArray($response);
}
Nếu ta dùng binding trong appService ta chỉ cần thay
$this->app->bind(
\App\Services\Company\ICompanyService::class,
\App\Services\Company\JaCompanyService::class
);
là xong. quá đã đúng ko, check thêm doc ở đây: https://laravel.com/docs/10.x/container#binding-interfaces-to-implementations
hỏi sữa lỗi laravel
Bạn thử check lại source code đã phải ở trong folder htdocs của xampp chưa. Mình thấy có vẻ là chưa
[Wordpress] Gửi mail sau khi đăng kí tài khoản thành công ( tự custom phần đăng kí tài khoản)
thường thì task gửi email là một task khá là nặng và tốn nhiều thời gian vãi ra. Làm người dùng cứ nghĩ làm gì to tát lắm, mà có làm gì nhiều đâu, gửi email chơ mấy. xong còn ấn F5 các kiểu. Mình thì khoái PHP và đối với PHP thì người ta sẽ thường dùng Queue trong trường hợp ntn, kiểu bạn cứ add cái task gửi email vào 1 hàng đợi, r bạn cứ response về cho người dùng mà không quan tâm là gửi email có lỗi hay không. Sau khi response xong thì hệ thống mới bắt đầu lôi cái task gửi mail ra và chạy ngầm. Mình không rõ về wp nhưng mà thấy cái này cũng ok https://www.hoangweb.com/thu-thuat/tao-queue-jobs-trong-wordpress hoặc bạn có thể tự research với keyword:
wp queue mail
Xứ Lý Ngày Tháng PHP tiếng anh sang việt
$nextTimeF = date("g:i A", strtotime($nextTime));
$day = date("w", strtotime($nextTime));
$arr = array(
'0'=> 'Chủ Nhật',
'1'=> 'Hai',
'2'=> 'Ba',
'3'=> 'Tư',
'4'=> 'Năm',
'5'=> 'Sáu',
'6'=> 'Bảy',
)
switch ($day) {
case 0:
$day_of_week = $arr[$day];
break;
default:
$day_of_week = "Thứ ". $arr[$day] ;
break;
}
echo $output = $day_of_week . $nextTimeF
có gì bác chỉnh lại nhé
Các kĩ năng
Tổ chức
Chưa có tổ chức nào.