چهارچوب چیست؟
چهارچوب مجموعهای متشکل از کتابخانهها، قراردادها، استاندارها، الگوهای طراحی و خطمشیهای کدنویسی است که بر مبنای یک زیرساخت نرمافزاری در اختیار برنامهنویسان قرار میگیرد. برای هر یک از زبانهای برنامهنویسی بزرگ چهارچوبهای بزرگی عرضه شده تا توسعهدهندگان برای انجام برخی وظایف ساده مجبور نشوند از ابتدا همه چیز را کدنویسی کنند. بهطور کلی، چهارچوبها برای اهداف خاصی طراحی شدهاند و گاهی اوقات عملکرد خاص منظورهای دارند. از چهارچوبهای مهمی که برای زبان پیاچپی عرضه شده باید به Phalcon ،Zend ،Symfony ،Codelgniter ،CakePHP و Yii اشاره کرد که همگی پس از لاراول از محبوبترین چهارچوبهای ارائه شده برای زبان پیاچپی هستند.
چهارچوب لاراول چیست؟
لاراول چهارچوب مبتنی بر معماری MVC است که به شکل رایگان و متنباز ارائه شده است. این چهارچوب امکانات هوشمندی در اختیار توسعهدهندگان قرار میدهد تا فرآیند برنامهنویسی برای آنها سادهتر و کم دردسرتر شود. امنیت بیشتر و توسعه سریعتر از مزایای شاخص لاراول در مقایسه با نمونههای مشابه است. لاراول کتابخانههای کاربردی زیادی دارد و از بیشتر کتابخانههای چهارچوب سیمفونی نیز استفاده میکند. علاوه بر این، چهارچوب مذکور خدمات مختلفی در اختیار توسعهدهندگان قرار میدهد که از آن جمله باید به خدمات تایید هویت، دسترسیهای کاربران، کنسول Artisan، پرداخت و صورتحساب، کش ذخیرهسازی و موارد این چنینی اشاره کرد. در لاراول توسعهدهندگان میتوانند با کدنویسی کوتاه و دستورات مختصر کارهای بزرگی را انجام دهند، درست همانند زبان پایتون که خوانایی و کدنویسی کوتاه باعث شده این زبان برای کاربردهای مختلفی مفید باشد. مکانیزم پیادهسازی ساده و روان فرمهای عضویت و ورود در لاراول از ویژگیهای مثبت این زبان است. همچنین، مولفه Composer در لاراول به توسعهدهندگان اجازه میدهد به سادهترین شکل چهارچوب مذکور را بهروز کنند. چهارچوب لاراول مولفهمحور است. به عبارت دقیقتر، کاربران میتوانند مولفههای دلخواه خود را به برنامه کاربردی اضافه کنند تا روند توسعه سریعتر شود. علاوه بر این، در صورتی که از منطق اجرایی لاراول استفاده شود، کدنویسی برنامههای وب بازهم سادهتر میشوند. ویژگی بارگذاری خودکار (Auto Loading) در لاراول باعث میشود تمام نیازمندها برای مولفهها، کلاسها و سایر موجویتها به شکل خودکار بارگذاری شود. قابلیت مهم دیگر لاراول Migration برای ساخت بانکاطلاعاتی است که باعث سادگی انتقال و مدیریت اطلاعات میشود.
قابلیتهای کاربردی ارائه شده توسط لاراول
یکی از بهترین ابزارهایی که در چهارچوب مذکور از آن استفاده شده و میتوان به عنوان یکی از قدرتمندترین قابلیتهای لاراول از آن نام برد، ابزار ORM است که یک کانال ارتباطی میان بانکهای اطلاعاتی و اجرای محاورهها پیادهسازی میکند و علاوه بر این قابلیتهایی برای اجرای هدفمندتر کردن محاورهها ارائه میکند. خاصیت مهم دیگر ارائه شده توسط این چهارچوب auto-loading است. خاصیت فوق اجازه میدهد تمامی کلاسها و مولفههای خود را به شکل خودکار در صورت نیاز بارگذاری و از آنها استفاده کنید. ویژگی مذکور یکی از نقاط قوت لاراول است، زیرا دیگر نیازی نیست به شکل دستی کتابخانهها و فایلهای خود را وارد (include) کنید. امروزه کمتر برنامه کاربردی را پیدا میکنید که قابلیت ارسال و دریافت ایمیل نداشته باشد. لاراول میتواند با تمام سرویسهای دریافت و ارسال ایمیلها به سادهترین شکل همگام شود. به غیر از توابع SMTP و PHP Mail، از سرویسهای نامهرسان دیگری نظیر SparkPost ،Mailgun Mandrill ،SendMail ،Amazon SES و نمونههای دیگر پشتیبانی میکند. علاوه بر این میتوانید با استفاده از Nexmo ایمیلهایی را از طریق اسلک ارسال کنید. علاوه بر این امکان دریافت و ارسال پیام کوتاه را نیز فراهم میکند. تیمهای بزرگ برنامهنویسی برای انجام درست وظایف باید از یک سامانه کنترل نسخه استفاده کنند. همچنین به این نکته توجه داشته باشید که لاراول از بانکهای اطلاعاتی اسکیوالسرور، مایاسکیوال، SQLLite و PostgreSQL پشتیبانی میکند.
لاراول 8 چه قابلیتهایی در اختیار توسعهدهندگان قرار میدهد؟
نگارش 8 لاراول در تاریخ 20 نوامبر 2020 میلادی بهطور رسمی منتشر شد. نسخه 8 جدیدترین نگارش ارائه شده برای این چهارچوب است که ضمن ارائه قابلیتهای کاربردی قدرتمند، سرعت و امنیت برنامههای نوشته شده با پیاچپی را بهبود بخشیده است. با توجه به اینکه نگارش فوق به تازگی به بازار عرضه شده در ادامه برخی از مهمترین قابلیتهای ارائه شده برای این چهارچوب را بررسی میکنیم.
انواع Union
نوعهای Union مجموعههایی از دو یا چند نوع هستند که تنها یکی از آنها استفاده میشود. ترکیب نحوی زیر این موضوع را نشان میدهد.
public function foo(Foo|Bar $input): int|float;
دقت کنید که void نمیتواند بخشی از نوع Union باشد، زیرا مقداری بدون نوع بازگشتی است. علاوه بر این، یونیونهای تهیپذیر را میتوان با استفاده از null یا با استفاده از نمادگذاری رایج ? همانند قطعه کد زیر نوشت.
public function foo(Foo|null $foo): void;
public function bar(?Bar $bar): void;
عملگر nullsafe
اگر با عملگر تجمیع تهی آشنا باشید، بدون تردید با مشکلات آن آشنا هستید. این عملگر روی فراخوانیهای متد کار نمیکند و به جای آن نیاز به بررسیهای لحظهای دارد یا باید روی توابع کمکی optional که برخی چهارچوبها ارائه میکنند تکیه کند. optional با اضافه شدن عملگر nullsafe به نسخه جدید پیاچپی این قابلیت فراهم کرده تا رفتاری شبیه تجمیع تهی روی متدها داشته باشیم. قطعه کد زیر این موضوع را نشان میدهد.
$dateAsString = $booking->getStartDate()?->asDateTimeString();
آرگومانهای دارای نام
آرگومانهای دارای نام (Named Arguments) امکان ارسال مقادیر به یک تابع را با تعیین نام مقدار فراهم کردهاند، بهطوری که دیگر نیازی نیست به ترتیب آرگومانها دقت کنید و میتوانید از پارامترهای اختیاری نیز صرفنظر کنید.
function foo(string $a, string $b, ?string $c = null, ?string $d = null)
{ /* … */ }
foo(
b: ‘value b’,
a: ‘value a’,
d: ‘value d’,
);
خصلتها
خصلتها (Attributes) روشی قدرتمند برای اضافه کردن فرادادهها به کلاسها است، بدون آنکه تحلیل بلوکهای کد ضرورتی داشته باشد. برای درک بهتر موضوع به ترکیب نحوی زیر دقت کنید:
use App\Attributes\ExampleAttribute;
#[ExampleAttribute]
class Foo
{
#[ExampleAttribute]
public const FOO = ‘foo’;
#[ExampleAttribute]
public $x;
#[ExampleAttribute]
public function foo(#[ExampleAttribute] $bar) { }
}
#[Attribute]
class ExampleAttribute
{
public $value;
public function __construct($value)
{
$this->value = $value;
}
}
عبارت Match
این عبارت را میتوان نسخه ارتقا یافته عبارت switch توصیف کرد. Match میتواند مقادیر را بازگرداند بدون آنکه به گزارههای break نیازی باشد. رویکرد فوق اجازه میدهد شروط را ترکیب کنید، از ترکیب نوع صریح استفاده کنید و هیچ کاهش نوع نداشته باشید. ترکیب نحوی زیر عملکرد عبارت فوق را نشان میدهد.
$result = match($input) {
0 => “hello”,
‘1’, ‘2’, ‘3’ => “world”,
};
ارتقای مشخصه سازنده
در نگارش 8 به جای اینکه مشخصههای کلاس را تعیین و یک سازنده برای آنها تعریف کنید، این دو حالت را میتوان در یک بخش منفرد ترکیب کرد. ترکیب نحوی زیر نشان میدهد که چگونه دستورات حالت فشرده و کارآمدی پیدا کردهاند.
class Money
{
public function __construct(
public Currency $currency,
public int $amount,
) {}
}
انواع بازگشتی جدید static
درست است که در گذشته امکان بازگشت self فراهم بود، اما static قبل از نگارش 8 یک نوع بازگشتی معتبر در زبان پیاچپی نبود. با توجه به ماهیت پویای نوعها در پیاچپی، قابلیت فوق کمک فراوانی به توسعهدهندگان میکند.
class Foo
{
public function test(): static
{
return new static();
}
}
نوع جدید mixed
نوع mixed یکی از پر حاشیهترین قابلیتهای اضافه شده به نسخه جدید است که انتقادات زیادی نظیر سردرگمی توسعهدهندگان به آن وارد شده است. با اینحال، نوع Mixed مفاهیم کاربردی جدیدی به پیاچپی اضافه میکند. بهطور مثال، یک تابع میتواند هیچ چیز یا Null را باز گرداند یا میتوانیم یکی از چند نوع مختلف را انتظار داشته باشیم. mixed میتواند به شکل یک پارامتر از نوع مشخصه و نه به صورت یک نوع بازگشتی باشد.
وراثت با متدهای خصوصی
در گذشته، پیاچپی از وراثت یکسانی برای ارزیابی متدهای عمومی، محافظت شده و خصوصی استفاده میکرد. به عبارت دیگر، متدهای خصوصی باید از همان قواعد امضای متد به عنوان متدهای محافظت شده و عمومی پیروی میکردند. اکنون این حالت تغییر پیدا کرده، بهطوری که این بررسیهای وراثت دیگر روی متدهای خصوصی اجرا نمیشوند.
بهکارگیری :class روی اشیا
یکی دیگر از قابلیتهای جدید و مفید پیاچپی امکان استفاده از ::class روی اشیا است. به این ترتیب به جای اینکه از get_class() روی یک شی استفاده کنیم، قادر هستیم از روش جدید بهرهمند شویم. ترکیب نحوی زیر این روش جدید را نشان میدهد.
$foo = new Foo();
var_dump($foo::class);
Non-Capturing Catches
تا قبل از ارائه نگارش 8 هر زمان که درنظر داشتیم یک استثناء را مدیریت کنیم، باید آنرا در یک متغیر ذخیره میکردیم و اهمیتی نداشت که از متغیر مذکور استفاده میکردیم یا خیر. با معرفی قابلیت Non-Capturing Catches میتوانیم این متغیر را نادیده بگیریم. ترکیب نحوی زیر این موضوع را نشان میدهد.
try {
// Something goes wrong
} catch (MySpecialException) {
Log::error(“Something went wrong”);
}
قابلیتهای کاربردی دیگری نیز به نسخه 8 اضافه شدهاند که از آن جمله باید به کامای پایانی در فهرستهای پارامتر، ایجاد اشیای DateTime از رابط، رابط جدید Stringable، تابع جدید str_containts()، توابع جدید
str_ends_with() و str_starts_with() ، fdiv()، پیادهسازی شی token_get_all()،
دستکاری ساختار متغیر و موارد دیگر اشاره کرد. اکنون که تا حدودی با قابلیتهای کاربردی و جدید لاراول آشنا شدید، اجازه دهید کمی در مورد پیاچپی صحبت کنیم.
چرا باید از زبان برنامهنویسی پیاچپی استفاده کنیم؟
پیاچپی یک زبان برنامهنویسی شیگرا برای توسعه وب است که شباهت زیادی به زبان سی/سیپلاسپلاس دارد. البته نگارشهای جدید این زبان وجه تشابهی با زبان جاوا پیدا کردهاند. پیاچپی یک زبان سمت سرور است. به اینمعنا که صفحات پیاچپی توسط سرور آپاچی یا IIS پردازش میشوند و خروجی به شکل کدهای اچتیامال و جاوااسکریپت برای مرورگر کاربر ارسال میشوند. آمارها نشان میدهند بیش از 240 میلون سایت با این زبان طراحی شدهاند. با توجه به اینکه، پیاچپی جزء ده زبان برتر برنامهنویسی در جهان است، اگر روی یادگیری این زبان همراه با چهارچوب لاراول سرمایهگذاری کنید، در بلندمدت سود کلانی دریافت میکنید. بهطور مثال، اگر تمایلی ندارید در شرکتی مشغول به کار شوید، این شانس را پیدا میکنید که به شکل یک برنامهنویس آزادکار پروژههایی را دریافت کنید و دستمزد خود را ساعتی دریافت کنید. این رقم در بازار کار ایران از ساعتی 70 هزار تومان آغاز میشود. دستورات زبان پیاچپی به شکل مستقیم در کدهای زبان نشانهگذاری پیاچپی نوشته میشوند. یکی از بزرگترین مزایای پیاچپی سازگاری آن با زیرساختهای مختلف است. به بیان سادهتر، پیاچپی یک زبان چندسکویی است که که قابلیت اجرا روی سامانههای عامل ویندوزی، لینوکسی و مک را دارد و بدون اعمال تغییر چندانی در پیکربندی میتوان از یک زیرساخت به دیگری مهاجرت کرد. دومین مزیت بزرگ این زبان سازگاری با وبسرورهای نام آشنا است. آپاچی و آیآیاس مایکروسافت از معروفترین سرورهایی هستند که پیاچپی قادر به تعامل با آنها است. علاوه بر این، از انواع مختلفی از بانکهای اطلاعاتی نظیر MongoDB، SQLite، MySQL، PostgreSQL و نمونههای مشابه پشتیبانی میکند. افرادی که علاقهمند به یادگیری این زبان هستند به مستندات و مطالب آموزشی زیادی دسترسی دارند و از طرف جامعه گستردهای از توسعهدهندگان پشتیبانی میشوند. بنابراین مشکل خاصی در ارتباط با یادگیری سریع این زبان وجود ندارد. کاربرانی که قصد پیاچپی را دارند، اغلب این پرسش را مطرح میکنند که پس از یادگیری این زبان قادر به انجام چه کارهایی هستند. از کارهایی که در سمت سرور با پیاچپی انجام میشود باید به رمزگذاری روی دادهها، محدودیت دسترسی به برخی صفحات سایت، پردازش اطلاعات فرمهای اچتیامال، خواندن، نوشتن، بستن و ساخت فایلها در سمت سرور، اعمال تغییرات روی بانکهای اطلاعاتی و اجرای اسکریپتها از طریق خط فرمان اشاره کرد. درست است که پیاچپی به عنوان زبان برنامهنویسی وب شناخته میشود، اما کتابخانههایی نظیر PHP-GTK به برنامهنویسان توانایی ساخت برنامههای دسکتاپی را میدهد.
بازار کار برنامهنویسان مسلط به پیاچپی
بازار کار برنامهنویسان و متخصصان فناوریاطلاعات در ایران تقریبا متفاوت از سایر کشورها است. به بیان دقیقتر، در برخی از کشورها توسعهدهندگان با تسلط بر یک زبان برنامهنویسی نظیر سی یا سیپلاسپلاس مشاغلی با درآمد بالا کسب میکنند. علاوه بر این، در بیشتر کشورها، به ویژه کشورهای صنعتی برای زبانهای برنامهنویسی مختلف موقعیتهای شغلی وجود دارد، در حالی که در ایران بازار کار محدود به زبانهای خاصی نظیر سی شارپ، پیاچپی، جاوا، پایتون، ASP.NET و نمونههای مشابه است. بهطور مثال، به ندرت شرکتی را پیدا میکنید که حاضر باشد برنامهنویس مسلط به زبان جولیا یا آر را استخدام کنند. در ایران، سامانههای مدیریت محتوای رایج نظیر وردپرس و زبانهای برنامهنویسی سمت وب نظیر ASP.Net و پیاچپی مورد توجه هستند. همچنین، به این نکته مهم دقت کنید که شرکتهای بزرگی که قصد راهاندازی وبسایتهای حساس را دارند ترجیح میدهند از ASP.net MVC و ترکیب پیاچپی و MySQL به جای سامانههای مدیریت محتوا استفاده کنند. البته جایگاه پیاچپی به نسبت ASP.Net بهتر است و اگر برای یادگیری این زبان سرمایهگذاری کنید، بدون مشکل خاصی قادر به یادگیری سامانههای مدیریت محتوا هستید، زیرا بیشتر این سامانهها نظیر وردپرس، جوملا و دروپال با استفاده از پیاچپی نوشته شدهاند. میزان حقوق دریافتی توسعهدهندگان مسلط به هر دو زبان تقریبا نزدیک است و خوشبختانه هر دو گروه برنامهنویسان بازار کار خوبی دارند. آمارهای منتشر شده توسط سایتهایی نظیر w3techs.com نشان میدهند که بازار کار برنامهنویسان پیاچپی قرار نیست در کوتاهمدت دچار نوسان شود. گزارشی که سایت مذکور ارائه کرده نشان میدهد در حوزه زبانهای برنامهنویسی سمت سرور، اسکالا، پیاچپی، روبی، ASP.Net و جاوا پیشتاز هستند. این گزارش نشان میدهد که پیاچپی با 78.9 درصد در مکان اول و پس از آن ASP.NET با 10.6 درصد در جایگاه دوم قرار دارد. زبانهای جاوا و روبی نیز در رتبههای بعدی قرار دارند (شکل 1). از سایتهای مهمی که توسط پیاچپی نوشته شدهاند باید به فیسبوک، ویکیپدیا، زوم، مایکروسافت، وردپرس و نمونههای مشابه اشاره کرد. البته به این نکته مهم دقت کنید که پیاچپی قرار نیست جادو کند. به بیان دیگر، اگر قصد ورود به دنیای هوش مصنوعی، برنامهنویسی موبایل یا پروژههای گسترده در حوزه دسکتاپ را دارید، نباید روی پیاچپی حساب کنید، اما اگر به دنیای برنامهنویسی وب علاقه دارید، پیاچپی بهترین انتخاب است. با توجه به اینکه استارتآپها و کسبوکارهای کوچک برای راهاندازی وبسایتهای موردنیاز به سراغ سامانههای مدیریت محتوا میروند، تسلط بر پیاچپی کمک میکند با کمی تلاش برای این فرصتهای شغلی رزومه ارسال کنید.
شکل 1
برای یادگیری پیاچپی باید روی چه مفاهیمی سرمایهگذاری کنیم؟
رسیدن به موقعیت شغلی مطلوب در حوزه برنامهنویسی پیاچپی به مهارتهای تخصصی کلیدی نیاز دارد. آشنایی با پروتکلهای رایج دنیای وب، مفاهیم بکاند و فرانتاند از مهمترین پیشنیازهای لازم برای تبدیل شدن به یک برنامهنویس حرفهای پیاچپی است. علاوه بر این باید در مورد فناوریهای پر کاربرد سمت فرانتاند نظیر اچتیامال، جاوااسکریپت و سیاساس مهارت لازم را کسب کنید. پس از تسلط بر فناوریهای یاد شده و ترکیب محوی پیاچپی در گام بعد باید به سراغ چهارچوبهای پر کاربرد این زبان بروید. چهارچوبهای متعددی برای این زبان عرضه شدهاند، اما لاراول سرآمد آنها است و باعث افزایش حقوقتان میشود. البته چهارچوبهای دیگر نظیر Yii، Symfony و CakePHP نیز کاربردهای گستردهای دارند. در مرحله بعد، باید دانش خود در ارتباط با برنامهنویسی شیگرا و Restfull در پیاچپی را افزایش دهید. بهطور کلی، آگهیهای استخدامی جذب برنامهنویسان پیاچپی به نیازمندیهای یکسانی اشاره دارند. برخی از آنها به شرح زیر است:
نمونه اول
برنامه نویس مسلط به پیاچپی، CSS، HTML
آشنا به انواع بانکهای اطلاعاتی (مسلط به MY SQL)
مسلط به ساخت پنلهای مدیریتی و CRM
مسلط به ساخت گزارش و گزارشگیری
نمونه دوم
برنامهنویس PHP (Wordpress)
نوع همکاری: تمام وقت، پاره وقت، پروژهای، دورکاری
مدت پروژه: دو ماه تمام وقت یا 4 ماه پاره وقت
با تسلط کامل بر WordPress
تسلط کامل به پلاگین ها و افزونه ها در WordPress
نمونه سوم
برنامه نویس ارشد PHP مسلط به لاراول
برنامهنویس مسلط به PHP و چهارچوب Laravel
مسلط به HTML/CSS ،JavaScript و JQuery
مسلط به OOP و مفاهیم MVC
توانایی و تحلیل الگوریتمهای برنامهنویسی و زیرساختهای داده و نگهداری فایل
مسلط به بانکاطلاعاتی MySQL ، تحلیل و طراحی دیتابیس، کوئریهای پیچیده و بهینهسازی
تسلط بر مفاهیم OOP، Design Patterns و /Redis /SOLID
توانایی حل مسئله بالا
آشنا به گیت
آشنایی با سیستم مدیریت محتوای وردپرس
نمونه چهارم
برنامه نویس مسلط به PHP و Laravel
مسلط به چهارچوب لاراول
مسلط به معماری MVC و Restful
تجربه کار با Job و Event ها در Laravel
مسلط به نرمافزار کنترل نسخه گیت
مسلط به Unit testing و TDD
مسلط به مفاهیم Caching در لاراول
تسلط بر پایگاه داده MySQL و ORMهای مربوط به PHP
مسلط به HTML/CSS/JS
* همانگونه که مشاهده میکنید وجه تشابه آگهیهای استخدامی تسلط بر لاراول، الگوهای طراحی، برنامهنویسی شیگرایی و بانکهای اطلاعاتی رایج است. بنابراین، برای پیدا کردن شغلی به عنوان یک توسعهدهنده پیاچپی مسیر روشن و مشخصی پیشرو وجود دارد. تنها نکتهای که باید به آن دقت کنید، تسلط کامل بر این زبان، فناوریهای مکمل و چهارچوبی است که قصد کدنویسی با آنرا دارید
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟