Namespace چیست و نحوه استفاده از Namespace در لاراول


به درخواست یکی از دوستان این مطلب رو در مورد فضای نام  (namespace) درلاراول  آماده کردم که خدمت  دوستان ارائه می کنم

برای درک چگونگی ساختار برنامه خود  مخصوصا لاراول 5 ، شما باید مفهوم namespacing را  به خوبی درک کنید.

اول یک توضیحاتی در مود خود namespace  که کلا چی هست و به چه دردی می خوره ( شاید این قسمت برای بعضی دوستان کمی خسته کننده باشد اما  باید گفت ، شاید بعضی دوستان زیاد آشنا نباشن ) عرض می کنم .

به شکل ساده میتوان گفت Namespace( فضای نام ) به منظورطبقه‌ بندی   گروهی از متغییر ها ، توابع و کلاس ها استفاده می شود . یعنی هر شناسه ای اعم از اسم متغیر، اسم تابع، اسم کلاس و هر چیز دیگه توی این فضا فقط توسط سایر اعضای  مشترک شده (استفاده کننده) این فضا به صورت مستقیم در دسترس هست.

برای درک بهتر این مطلب را  با یک مثال  از Namespace ادامه می دم   ، اینکه اگر از Namespace در برنامه نویسی پروژه  با فریم ورک لاراول یا  هر فریم ورکی غیر از لاراول  استفاده کنیم چه مزایایی داره و اگر استفاده نکنیم چه مشکلاتی خواهیم داشت

فرض کنید شما در حال نوشتن یک CMS برای یک وب سایت مدرسه هستید ، شما ممکن است یک کلاس  مدیر(admin)  برای مدیریت کاربرمدیر  CMS  داشته باشید روی که سایت کنترل داشته باشد، حالا در نظر بگیرید که هر مدرسه یک نفر مدیر دارد برای نظارت روی اعمال کارکنان ، معلمان و دانش آموزان پس یک کلاس مدیر(admin) هم برای مدرسه داریم  ،  حالا در نظر بگیرید که می خواهیم یک  مدیر مدرسه اضافه  کنیم تشخیص اینکه ما در مورد کدام یک از این مدیر ها صحبت می کنیم  به عهده   namespace  هست که ما را از گمراهی   و اشتباه به دور می کند .

به طور کلی، فقط یک کلاس می تواند با یک نام خاص در یک محدوده خاص وجود داشته باشد. بنابراین داشتن دو کلاس هر دو به نام مدیر(admin) در محدوده یکسان ممکن نیست . یک namespace محدوده را تعریف می کند به طوری که دو کلاس  با نام  مدیر(admin) می توانند در namespace متفاوت وجود داشته باشند .

به عبارت ساده تر یک دسته کلاس های مرتبط به هم رو داخل یک namespace قرار می دهیم ،  مشکل هم نام بودن نام کلاس ها و متدها را هم حل می شود .

بنابراین،برای مثال بالا، کلاس های استفاده کننده از namespace  به شکل زیر می باشد :

1

استفاده از namespace  در لاراول بسیار گسترده است ،  Application  و کلاس های Kernel  فقط چند نمونه  ساده استفاده از آن می باشد.

1

 

Namespace  در لاراول

اگر به محتویات فایل  composer.json  نگاه کنید، یک شی با مالکیت autoload.psr-4 را پیدا  خواهید کرد .

 

1

ما دراینجا به Composer  می گوییم که autoloader  را با استاندارد PSR-4   ، برای namespace با عنوان  App تنظیم کند .

آرایه autoload.classmap   مشخص کننده دایرکتوری می باشد که کلاس های ضمیمه پروژه در آن قرار می گیرند .

 

  تغییر Namespace در  لاراول

برای این کار از Artisan کمک می گیریم ، عملیات زیر را در خط فرمان اجرا می کنیم .

نام تعیین شده ما برای پروژه LaraWork می باشد .

 

1

 

حال مجددا به فایل  composer.json  برمی گردیم  و می بینم که  مقدار مشخص شده برای namespace تغییر کرده است .

 

1

 

 




آموزش و نکات کار با Migration در لاراول


سلام همان طور که در پست های قبلی اشاره کرده بودم یک آموزش کامل از نحوه ایجاد و مدیریت دیتابیس توسط Migration در لاراول را
آماده کردم که خدمت همه عزیزان تقدیم می کنم :
Migration ها به شما این اجازه را می دهند که دیتابیس خود را بدون مراجعه به ابزارهای کمکی مثل phpmyadmin مدیریت کنید .
یعنی برای ایجاد و مدیریت جداول و همچنین تغییرات در بانک اطلاعاتی میتوانید از migration ها استفاده کنید .
با این روش شما دیگر احتیاجی به نوشتن دستورات Sql ندارید و از دستورات زیر برای طراحی و مدیریت بانک اطلاعاتی استفاده نماپید .

برای کار با دیتابیش از طریق Mygration Laravel ابتدا یک بانک اطلاعاتی در DBMS خود مثلا Mysql خود با ابزارهای مانند Phpmyadmin ایجاد نماپید . چرا که این روش برای همه دیتابیس های درگیر با لاراول قابل اجرا می باشد و صرفا برای Mysql نمی باشد .

بعد از ایجاد بانک اطلاعاتی به مسیر app/config/database.php  بروید و کد زیر را ویرایش کنید

در صورتی که از Mysql استفاده می کنید :

1

سپس نوبت به ایجاد و مدیریت جداول بانک اطلاعاتی می رسد

در مرحله اول ابتدا یک mygration برای جدول مورد نظر ایجاد می کنیم مثلا جدولی با عنوان Posts

با اجرای این دستور در ترمینالو در شاخه اصلی پروژه خود میتوانید migration جدولی به اسم Posts  ایجاد کنید :

1

به عبارت create_ در ابتدا و _table در انتهای نام جدول دقت نماپید که شما نیز در طراحی جداول می بایست از این عبارات در ابتدا و انتهای mygration استفاده نماپید .
بعد از وارد کردن دستور فوق یک فایل در آدرس app/database/migrations/ برای شما ایجاد می شود .

در فایل ایجاد شده عبارت زیر به صورت اتوماتیک ایجاد می شود .

1

در کد ایجاد شده دو قسمت می باشد که قسمت اولیه در مرحله صدا زدن مستقیم migration اجرا می شود و قسمت دوم در زمان صدا زدن به عنوان بازگشتی (rollback) استفاده می شوند .

حال برای ایجاد بانک اطلاعاتی از دستوراتی استفاده می کنیم که در این قسمت با یک مثال توضیح می دهم :

1

bigIncrements : زمانی که بخواهیم یک فیلد با نوع عدد بزرک به صورت increment (شماره گذاری خود کار ) ایجاد کنیم .
string : برای زمانی که بخواهیم یک فیلد از نوع string ایجاد کنیم و در پارامتر دوم مقدار کاراکتر را وارد می کنیم .
text : زمانی که بخواهیم یک فیلد از نوع متن طولانی را ایجاد نماپیم .
integer : زمانی که بخواهیم یک فیلد از نوع عدد ایجاد نماپیم .
bigInteger : زمانی که بخواهیم یک فیلد از نوع عددبزرگ ایجاد نماپیم .
boolean : برای ایجاد فیلد های از نوع انتخابی true / false می باشد .
timestamps : برای ایحاد فیلد های زمانی کنترل زمان ارسال و مدیریت سطر های بانک اطلاعاتی می باشد .
برای ایجاد یک ارتباط (Relation) با جداول دیگر از کد foreign استفاده می کنیم که با references فیلد رابط و on نام جدول طرف دوم ارتباط را مشخص می کنیم onDelete و onUpdate مشخص می کنند که هنگام تغییرات روی سطر مبدا چه اتفاقی برای سطرهای سیار جدول ها که با جدول ارتباط دارند رخ دهد .
index : برای ایندکس کردن فیلد های جدول از این دستور استفاده می کنیم.

در مرحله بعد باید مشخص کنیم که در هنگام rollback یعنی قسمت دوم کد چه اتفاقی رخ بدهد به کد زیر دقت کنید :

1

ما در اینجا مشخص کردیم که هنگام rollback جدول را کلا حذف نماید .

در مرحله بعد برای اجرای migraton های ایجاد شده از دستور زیر استفاده می شود :

1

برای بازگشت به تغییرات یک مرحله قبل می توانید از این دستور استفاده کنید:

1

و برای ریست کلی از این دستور :

1

در پایان عرض کنم که لاراول به هیچ وجه شما را مجبور به استفاده از migration نمی کند و شما می توانید به همان روش های قبلی نیز بانک اطلاعاتی را ایجاد و مدیریت نماپید .

موفق باشید.




استفاده از Join ‌در لاراول


سلام !

این آموزش به درد دوستانی می خورد که می خواهند در برنامه نویسی با فریم ورک لاراول بین دو جدول از دیتابیس ارتباط برقرار بکنند .

ایجاد ارتباط ساده بین دو جدول در لاراول

1

 

1

1

بر قراری Left Join ساده  در laravel

 

1

 

1

ارتباط های پیشرفته در لاراول Join

 

1

 

1

ایجاد شرط در join در لاراول :

 

1

 

1




لذت شروع دوباره با لاراول


سلام !
سلام مجدد دنیا !  ( واسه اینکه بعد از چند سال دوباره تصمیم گرفتم بنویسم)
خوب بریم سر اصل مطلب !  یعنی لاراول یا همون شروع دوباره من با لاراول

یه رزومه از خودم  :  یه ۷ یا ۸ سالی میشه که رسما توی زمینه وب فعالیت می کنم حالا از هاستینگ و مدیریت سرور تا برنامه نویسی و طراحی قالب و …

یه مدتی بود که دیگه از php لذت نمی بردم  (  خوب اصل مزیت برنامه نویسی اینکه از کارت لذت می بری )

  با فریم ورک های زیادی کار کرده بودم و کم و بیش یک سری اطلاعاتی در مورد همشون داشتم و بیشتر  با Codeigniter  کد می زدم .

تا اینکه یک روز دوست و همکار و بچه محل  قدیمی خودم مریلاگ که توی کار خودش واقعا خبرست و همیشه آپدیت هست و من از هم صحبتی باهاش لذت می برم اومد از مزایای لاراول برام گفت منم   همون روز  به کد زدن با لاراول علاقه مند   شدم اما یه ۲ الی ۳ ماهی به علت مشغله کاری ( پروژه سنگین ) نتونستم روش زیاد کار کنم و از اون به بعد حرفه ای پی گیرش شدم و الانم تصمیم دارم همه تجربیاتمو بزارم روی وبلاگم تا بقیه سرعت کد زدنشون بالاتر بره ! حالا امیدوارم وقت بکنم که وبلاگمو آپدیت نگه دارم !

با تشکر از شما که این مطالب نچسب رو خوندید !