نمایش نتایج 1 تا 6 از 6

نام تاپیک: namespace ها و use ها در لاراول 5

  1. #1

    namespace ها و use ها در لاراول 5

    سلام دوستان

    من یه مشکل مسخره ی بزرگ دارم.

    هر بار که میام از Request استفاده کنم اینارو امتحان میکنم ببینم کدوم جواب میده :


    use Illuminate\Http\Request;
    use Symfony\Component\HttpFoundation\Request;
    use App\Http\Requests\Request;
    use Illuminate\Support\Facades\Request;
    use Request;


    یا هر بار که میخوام از Auth استفاده کنم اینارو چک میکنم :
    use Illuminate\Support\Facades\Auth;
    use App\Http\Controllers\Auth;
    use Illuminate\Auth;
    use Illuminate\Contracts\Auth;
    use Illuminate\Foundation\Auth;


    و برای بقیه هم همینجوری .

    کلا نمیدونم namespace و use چیه...


  2. #2

    نقل قول: namespace ها و use ها در لاراول 5

    چرا تو این انجمن من فقط سوال میپرسم ؟

  3. #3
    کاربر دائمی
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    شوش
    پست
    123

    نقل قول: namespace ها و use ها در لاراول 5

    namespace :مسیر فایل رو برای auto load صدا میزنه(البته تجربه شخصی بندس)
    use :همون ایمپورت کردن کلاسه

  4. #4
    کاربر دائمی
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    شوش
    پست
    123

    نقل قول: namespace ها و use ها در لاراول 5

    http://stackoverflow.com/questions/2...l-5-namespaces
    اینجا کامل توضیح داده شده متوجه نشدی بگو برات بگم جریان چیه

  5. #5
    کاربر دائمی آواتار hamedarian2009
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    گرگان
    پست
    1,691

    نقل قول: namespace ها و use ها در لاراول 5

    فضای نام همون خاصیت کپسوله سازی شی گرایی رو پیاده سازی می کنه یعنی یک دسته کلاس های مرتبط به هم رو داخل یک namespace قرار می دین و مشکل هم نام بودن نام کلاس ها و متدها را هم حل میکنه لاراول ۵ به خوبی از این خاصیت استفاده کرده
    use هم شبیه همون include -require هست کلاس هارو باید برای استفاده اول import کرد

  6. #6
    کاربر دائمی
    تاریخ عضویت
    دی 1389
    محل زندگی
    اراک
    پست
    409

    نقل قول: namespace ها و use ها در لاراول 5

    فضای نام روشی برای دسته بندی کلاس ها، توابع و ... هست که مشکل همنامی در پروژه های بزرگ رو حل میکنه، در حالت عادی فضای نام، \ یا همون سراسری هست. یعنی هر کلاس، تابع یا ثابت که تعریف کنید، به صورت سراسری در تمام برنامه قابل استفاده هست.

    ولی اگر از فضای نام استفاده بشه، باید برای استفاده از عناصر موجود، فضای نام قید بشه.

    برای تعریف فضای نام روش های زیر وجود داره

    1- تعریف فضای نام برای تمام محتویات فایل، که برای استفاده از عناصر این فایل در خارج از این فایل، باید به صورت ()myNameSpace\myFunction و ... عمل کرد

    <?php

    namespace myNameSpace;

    const MY_CONST = 0;

    function myFunction(){}

    class MyClass{}

    ...



    2- ایجاد محدوده مشخص یا همون بلوک برای فضای نام، که برای استفاده از عناصر در خارج از این بلوک، باید به صورت ()myNameSpace\myFunction و ... عمل کرد

    namespace myNameSpace
    {

    const MY_CONST = 0;

    function myFunction(){}

    class MyClass{}

    ...

    }



    3- تعریف چند فضای نام در یک فایل، که محدوده هر فضای نام تا ابتدای تعریف فضای نام جدید معتبر هست.

    <?php

    namespace myNameSpace1;

    const MY_CONST = 0;

    function myFunction(){}

    class MyClass{}

    ...


    namespace myNameSpace2;

    const MY_CONST = 0;

    function myFunction(){}

    class MyClass{}

    ...

    که البته این روش پیشنهاد نمیشه و جایگزین بهتری داره:

    <?php

    namespace myNameSpace1
    {

    const MY_CONST = 0;

    function myFunction(){}

    class MyClass{}

    ...

    }


    namespace myNameSpace2
    {

    const MY_CONST = 0;

    function myFunction(){}

    class MyClass{}

    ...

    }



    4- تعریف فضای نام سلسله مراتبی

    <?php

    namespace My\Name\Space;

    const MY_CONST = 0;

    function myFunction(){}

    class MyClass{}


    در کل برای استفاده از عناصری که با هر کدام از روش های بالا در فضای نام تعریف می شند، باید قبل از نام عنصر، فضای نام قید بشه:

    myNameSpace\myFunction();
    My\Name\Space\myFunction();
    ...

    البته در صورتی که مورد استفاده خارج از محدوده فضای نام فعلی باشه! مثلا اگر در فضای نام A باشم، و تابع f هم در همین فضای نام تعریف شده باشه، نیازی به قید فضای نام در هنکام فراخوانی تابع نیست.

    همچنین برای استفاده از کلاس ها و عناصر سراسری در یک فضای نام، می بایست یک \ ابتدای فراخوانی گذاشته بشه، به این معنی که این عنصر متعلق به فضای نام سراسری هست، مثل DateTime\


    و اما use
    دستور use برای ایجاد یک نام مستعار کوتاه برای فضای نام ها استفاده میشه و نه include , ....!

    مثلا به جای نوشتن Illuminate\Support\Facades\Request در جای جای برنامه، میشه یک نام کوتاه تر برای این فضای نام تعریف کرد و از این نام کوتاه به جای نام بلند استفاده کرد

    use Illuminate\Support\Facades\Request as MyRequest;


    حالا کلاس MyRequest همون Illuminate\Support\Facades\Request خواهد بود.

    همچنین اگر as و نام مستعار نوشته نشند، php آخرین قسمت فضای نام رو به عنوان نام مستعار در نظر می گیره

    use Illuminate\Support\Facades\Request;

    که در این صورت، حالا کلاس Request نام مستعار Illuminate\Support\Facades\Request در نظر گرفته میشه
    آخرین ویرایش به وسیله rezakho : دوشنبه 24 فروردین 1394 در 12:40 عصر

تاپیک های مشابه

  1. درخواست راهنمایی در مورد namespace ها و using
    نوشته شده توسط alireza es در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 3
    آخرین پست: پنج شنبه 12 دی 1392, 09:29 صبح
  2. مشکل با using namespace std;
    نوشته شده توسط pcse7en در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 11
    آخرین پست: چهارشنبه 05 تیر 1392, 19:52 عصر
  3. مشکل در using کردن یک namespace
    نوشته شده توسط elham366 در بخش WCF , Web Services , .Net Remoting
    پاسخ: 2
    آخرین پست: چهارشنبه 08 مهر 1388, 14:01 عصر
  4. کاربرد using namespace std
    نوشته شده توسط roohollahnoori در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 1
    آخرین پست: شنبه 07 شهریور 1388, 12:12 عصر
  5. Using NameSpace
    نوشته شده توسط BitMap در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 11
    آخرین پست: شنبه 21 مرداد 1385, 13:51 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •