سلام خسته نباشید یه سوالی در مورد php mvc داشتم...
داخل لاراول میشه Request رو داخل پرانتز های تابع به کار برد مثلا:
public function(Request $request){
return $request->all();
}
به این کار چه چیزی گفته میشه و اصلا برای چی از این روش استفاده میشه و دقیقا چه کاری انجام میشه؟
به مثال زیر دقت کنید:
<?php
class FileLogger
{
public $var = 'Logging data to a file : <br>';
public function handle($data)
{
echo $this->var . $data;
}
}
function Logger($data,FileLogger $method)
{
$method->handle($data);
}
Logger('the information to log here', new FileLogger);
?>
Logging data to a file :
the information to log here
در کد بالا تابع Logger, تنها کارش لاگ کردن داده هاست. چگونگی لاگ کردن دادهها سپرده میشه به کلاس FileLogger.
فایده این کار اینه که اگر شما خواستید بعدا اطلاعات رو روی دیتابیس لاگ کنید یه کلاس DBLogger میسازید و اون رو به تابع Logger پاس میدید.( البته روش درستترش استفاده از Interface هست.)
همچنین Type Hinting به علاوه Dependency Injection (تزریق وابستگیها) بصورت عمده در لاراول داره استفاده میشه.
مثلا زمانی که شما برای ثبت یک پست٬ احتیاج به user_id دارید:
use Illuminate\Http\Request;
use App\User;
use App\Post;
Class PostController extends Controller
{
public function create(Request $request, User $user) {
Post::create([
'title' => $request->title,
'body' => $request->body,
'user_id' => $user->id,
]);
}
}
موفق باشید.
این تابعه متغییر ریکوست و که از نوع ریکوست هست و تو ورودیش دریافت میکنه یعنی اونجای که فرخوانیش میکنی یه متغییر بده بهش از نوع ریکوست
گاهی اوقات در تعریف کردن فانکشنها در زبان برنامهنویسی PHP نیاز داریم تا پارامترهای ورودی فانکشن مد نظر از نوع خاصی باشند بدین شکل که مثلاً پارامتر ورودی باید آبجکتی از روی کلاسی خاص، یک اینترفیس و یا یک آرایه باشد
به این کار اصطلاحا Type Hinting گفته میشه.
وقتی که قبل از تعریف نام یک آرگومان (مثلا request$) در تابع٬ نام کلاس Request بکار برده میشه...
یعنی این تابع انتظار داره مقداری که به request$ پاس داده میشه یک instance از کلاس Request لاراول باشه.
@ali.bayat
درود... خیلی ممنون از توضیحاتتون نمونه کدی از این کار دارید معرفی کنید تا بهتر متوجه بشم
خیلی مشتاقم دقیقتر بدونم که چه کاری انجام میشه
@Serjik
یه مثال ساده :
function calculatePrice(array $data) {
}
در تابع بالا ما مشخص کردیم که آرگومان data که به تابع پاس داده میشه باید از نوع آرایه باشه.
حالا اگر بجای array از آدرس یه کلاس استفاده میکردیم٬ یعنی آرگومان data که به تابع پاس داده میشه باید یه شئ ساخته شده از اون کلاس باشه.
@ali.bayat
وقتی از نوع Request هست یعنی $request یک شی ساخته شده از اون هست
چظور میشه یه چیزی شبیه به همین request ها ساخت یعنی کدی باید داخل کلاسی که آدرسش داده میشه نوشت کلا هندل کردنش چطور انجام میشه توی کلاس
به مثال زیر دقت کنید:
<?php
class FileLogger
{
public $var = 'Logging data to a file : <br>';
public function handle($data)
{
echo $this->var . $data;
}
}
function Logger($data,FileLogger $method)
{
$method->handle($data);
}
Logger('the information to log here', new FileLogger);
?>
Logging data to a file :
the information to log here
در کد بالا تابع Logger, تنها کارش لاگ کردن داده هاست. چگونگی لاگ کردن دادهها سپرده میشه به کلاس FileLogger.
فایده این کار اینه که اگر شما خواستید بعدا اطلاعات رو روی دیتابیس لاگ کنید یه کلاس DBLogger میسازید و اون رو به تابع Logger پاس میدید.( البته روش درستترش استفاده از Interface هست.)
همچنین Type Hinting به علاوه Dependency Injection (تزریق وابستگیها) بصورت عمده در لاراول داره استفاده میشه.
مثلا زمانی که شما برای ثبت یک پست٬ احتیاج به user_id دارید:
use Illuminate\Http\Request;
use App\User;
use App\Post;
Class PostController extends Controller
{
public function create(Request $request, User $user) {
Post::create([
'title' => $request->title,
'body' => $request->body,
'user_id' => $user->id,
]);
}
}
موفق باشید.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟