اذهب إلى المحتوى
  • 0

ما الفرق بين auth()->user() و Auth::user() في Laravel؟

ابراهيم بازي

السؤال

Recommended Posts

  • 0

الفرق هو أن auth()->user() يرجع الكائن User الحالي بينما Auth::user() يرجع الكائن User الحالي أو null إذا لم يكن هناك مستخدم محدد.

وتستطيع استخدام auth()->user() في المواقف التي تحتاج فيها إلى التأكد من وجود مستخدم محدد، مثلاً في حال كنت تريد عرض معلومات المستخدم الحالي ، فاستخدم:

 auth()->user()->name

بينما نستخدم Auth::user() في المواقف التي لا تحتاج فيها إلى التأكد من وجود مستخدم محدد. كمثل معرفة ما إذا كان هناك مستخدم محدد متصل.

وإليك مثال:

// استخدام auth()->user()
$user = auth()->user();

// طباعة اسم المستخدم الحالي
echo $user->name;

// استخدام Auth::user()
if (Auth::check()) {
    // هناك مستخدم متصل
} else {
    // لا يوجد مستخدم متصل
}
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

في Laravel، هناك نظام مصمم لإدارة المصادقة والهوية للمستخدمين. وتُستخدم الوظيفتين auth()->user() و Auth::user() للوصول إلى الكائن الممثل للمستخدم المصادق عليه في تطبيق Laravel.

الفرق الرئيسي بينهما هو الشكل الذي يتم استخدامه للوصول إلى الكائن.

  • auth()->user(): هذا الاستخدام يعد هو الأحدث في Laravel ويستخدم الوظيفة المساعدة auth() التي توفر واجهة مريحة للوصول إلى ميزات المصادقة. عن طريق استدعاء auth()->user()، يتم إرجاع الكائن الممثل للمستخدم المصادق عليه حاليًا. يعتبر هذا الشكل هو الأكثر شيوعًا ومستخدمًا بشكل شائع في تطبيقات Laravel.

 

  • Auth::user(): هذا الشكل يعود إلى الإصدارات السابقة من Laravel ويستخدم واجهة Auth المتاحة من الإصدارات السابقة. عن طريق استدعاء Auth::user()، يتم إرجاع الكائن الممثل للمستخدم المصادق عليه حاليًا. هذا الشكل لا يزال مدعومًا في Laravel حتى الآن لدعم التوافقية مع الرموز القديمة.

في الواقع، كلا الشكلين يعودان إلى نفس الكود الداخلي ويقومان بنفس الوظيفة، ولكن auth()->user() هو الشكل الموصى به حاليًا بواسطة Laravel ويستخدم أكثر شيوعًا في تطبيقات Laravel الحديثة.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

الفرق بين استخدام `auth()->user()` و `Auth::user()` يتعلق بالطريقة التي تتعامل معها مع إطار العمل Laravel.

auth()->user()
هذا الاستخدام يستند إلى المساعدة `auth()` التي تعرض واجهة برمجة تطبيقات مختصرة لخدمات المصادقة في Laravel. يُعد `auth()->user()` طريقة مختصرة للوصول إلى الكائن الحالي للمستخدم المصادق عليه في جلسة العمل الحالية. وتُعد `auth()` عبارة عن مساعدة تعمل كجسر بين التطبيق وخدمات المصادقة في Laravel.

Auth::user()
   يتعلق هذا الاستخدام بفئة `Auth` الموجودة في Laravel والتي توفر طرقًا مفيدة للتعامل مع خدمات المصادقة. يُعد `Auth::user()` طريقة أكثر تفصيلاً للوصول إلى الكائن الحالي للمستخدم المصادق عليه في الجلسة الحالية.

يمكن استخدام كلا الاستخدامين بنجاح للوصول إلى المستخدم الحالي في Laravel، ولكن `auth()->user()` قد يكون أكثر مرونة وسهولة في الاستخدام في الحالات البسيطة، بينما `Auth::user()` يقدم مزيدًا من الوظائف والطرق إذا كنت بحاجة إلى مزيد من التحكم والتخصيص.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

هذه بعض الأمثلة التي توضح الفروق بين `auth()->user()` و `Auth::user()` في Laravel:

نطاق الوصول:

يمكن استخدام `auth()->user()` في أي مكان في التطبيق، بما في ذلك الملفات العادية والـ controllers والـ views، وما إلى ذلك. هذا يعني أنه لا يتطلب استيراد أي فصيلة (Class) قبل استخدامها، وهو متاح في جميع أنحاء التطبيق.
بالمقابل، يمكن استخدام `Auth::user()` فقط في المناطق التي تم استيراد فصيلة الـ Facade Class "Auth". ويمكن استيراد هذه الفصيلة في الملفات العادية والـ controllers والـ views، وما إلى ذلك. على سبيل المثال، يمكن استخدام `Auth::user()` في الـ controller بعد استيراد فصيلة "Auth" بالطريقة التالية:
 

use Illuminate\Support\Facades\Auth;

class HomeController extends Controller
{
public function index()
{
$user = Auth::user();
// Do something with $user
}
}

الأداء:

تشير بعض الدراسات إلى أن استخدام `Auth::user()` يمكن أن يكون أسرع بشكل طفيف من استخدام `auth()->user()`، وذلك بسبب الفرق في طريقة الاستدعاء. ومع ذلك، يمكن أن تختلف هذه النتائج باختلاف حجم التطبيق وطريقة التنفيذ.
   
الاستخدامات المتعددة:

يمكن استخدام `auth()->user()` لإجراء مهام مختلفة في Laravel، مثل إنشاء روابط محمية وتحديث بيانات المستخدم، بينما يتم استخدام `Auth::user()` بشكل أساسي لاسترجاع معلومات المستخدم الحالي. وفيما يلي بعض الأمثلة على استخدام كل منهما:
`auth()->user()`:  

// إضافة رابط محمي إلى الـ view:
@if (auth()->user())
<a href="/dashboard">Dashboard</a>
@endif

// تحديث بيانات المستخدم في الـ controller:
public function update(Request $request)
{
$user = auth()->user();
$user->name = $request->input('name');
$user->email = $request->input('email');
$user->save();
return redirect('/dashboard');
}

`Auth::user()`:

// استرجاع معلومات المستخدم الحالي في الـ controller:
use Illuminate\Support\Facades\Auth;

public function index()
{
$user = Auth::user();
return view('home', compact('user'));
}
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...