یادگیری مقدماتی PHP (کامل نشده)

تذکر: این یک پست آموزشی برای عموم نیست! بلکه تنها جایی برای یادداشت‌های من حین یادگیریه تا بهتر به خاطر بسپارم و در صورت لزوم به اون‌ها مراجعه کنم.زبون‌هایی مثل Python و PHP و کلا زبون‌های Server-Side برای ایجاد برنامه‌های داینامیک به وجود اومدن. تقریبا ۸۰ درصد از وب سایت‌های حاضر حداقل در بخشی از کدهای خودشون از PHP استفاده کردن.منظور از LDE یا Local Development Environment اینه که یک وب سرور مثل Apache رو روی سیستم خودمون کانفیگ کنیم و به جای استفاده از یک سرور/هاست دیگه، توسعه رو روی سیستم خودمون انجام بدیم و بعد وقتی محصول نهایی شد اون رو روی سرور production دیپلوی کنیم. طبیعتا خوبی استفاده از LDE اینه که مشکلات نرم‌افزاری که حین توسعه رخ میده برای عموم در دسترس نیست و امنیت پروژهٔ ما و سایر پروژه‌هایی که روی همون هاست یا سرور هستن هم حفظ میشه و اینکه طبیعتا خیلی سریع‌تره و نیاز به دسترسی به اینترنت هم نداریم.حالا این PHP مخفف چیه؟ PHP: Hypertext Preprocessorچه کارهایی با PHP می‌کنیم؟- پردازش فرم‌ها- برقراری ارتباط با دیتابیس- ایجاد نواحی امن (لاگین و...)- خوندن و نوشتن توی فایل‌ها- مدیریت فایل‌های آپلود شده- و چیزهایی که خودت می‌دونی :)نحوه عملکرد PHPوب سرور نرم‌افزاریه که روی سیستم ما نصب میشه و منتظر دریافت یک درخواست از سمت کاربر می‌مونه، مثلا یک کاربر درخواست باز شدن یک صفحهٔ php به آدرس localhost/index.php رو میده، وب سرور می‌بینه که این یک فایل php هست پس به zend میگه که تو این صفحه رو برای من تفسیر کن و خروجیش رو بده به من تا من بدمش به کاربر.قبلا در مورد این خونده بودم که دو تا کد زیر دقیقا یکی هستن و دومی یک shortcut برای اولیه، اما از اونجایی که ممکنه این فیچر روی وب سرور غیر فعال شده باشه، بهتره که ازش استفاده نکنیم:<?php echo 'Hello World'; ?> <?='Hello World'?>فرق echo و print چیه؟ تقریبا فرق خاصی ندارن، به جز اینکه echo کمی سریع‌تره.برای فراخوانی یک Constant نیازی نیست که از $ ساین استفاده کنیم.توی PHP یک سری متغیر از پیش تعریف شده داریم که توی هر scope‌ای در دسترس هستند و بهشون می‌گیم Super Globals مثل متغیر POST GET FILES و... لیست کامل این متغیرها اینجا اومده.همچنین یک سری ثابت از پیش تعریف شده هم داریم که لیستش اینجا امده.انواع داده توی PHP:اعداد صحیحاعداد اعشاریکاراکترهاآرایه‌هارشته‌هاBooleanتفاوت Double Quote و Single Quote چیه؟دابل کوت: رشته‌هایی که داخل دابل کوت قرار می‌گیرند قبل از اینکه به خروجی فرستاده بشن به وسیلهٔ PHP مورد پردازش قرار می‌گیرن:<?php $name = 'Joe'; echo &quotHello $name&quot ?> output: Hello Joe<?php $name = 'Joe'; echo 'Hello $name'; ?> output: Hello $nameدابل کوت، تمامی escape characters رو میشناسه، اما سینگل کوت فقط بعضی‌ها رو میشناسه.آرایه‌ها:Indexable Associativeآرایه‌های چند بعدی: Multidimensional Arraysنحوه اضافه کردن یک مقدار جدید به آرایه indexable:$colors = array('blue', 'red'); $colors[] = 'green';توی پایتون برای اینکه چیزی به لیست اضافه کنیم از متد append استفاده می‌کردیم و برای ترکیب دو تا دیکشنری از متد update.نحوه پیاده‌سازی ۲ نوع آرایه عملگر XOR در صورتی مقدار true بر می‌گرداند که طرفین عملگر از یک جنس نباشند؛ یعنی اگر هر دو false یا true باشند؛ مقدار ارزیابی شده false می‌شود اما اگر یکی false و دیگری true باشد مقدار ارزیابی شده true خواهد بود.نحوه عملکرد XORانواع عملگرها در PHP:مطالعهٔ بیشتر در اینجا.توی زبان‌های برنامه‌نویسی انواعی از عملگرها رو داریم؛ با توجه به کار و ماهیتی که دارن، اون‌ها رو توی دسته‌های مختلفی قرار می‌دیم. مثلا عملگرهای ریاضی مثل + - * / ٪ ** باعث انجام یک عمل ریاضی یا محاسباتی بین عملوندهای طرفین خودشون میشن (operators and operands).عملگرهای رابطه‌ای، رابطهٔ بین دو عملوند رو بررسی می‌کنن، مثلا بزرگتری یا کوچکتری و... .عملگرهای منطقی، مطابق منطق جبر بول یک مقدار مطلق، یعنی صفر (false) و یا ۱ (true) رو برمی‌گردونن.یه سری دیگه از عملگرها، عملگرهای بیتی هستن.یه نکته‌ای که اینجا بهش اشاره شد و جالب بود، بحث تفاوت بین && و and هست که && رو کاربردی‌تر می‌کنه برای ما، به مثال زیر توجه کنید:$res = true && false; var_dump($res); // output: bool(false) $res = true and false; var_dump($res); // output: bool(false)عملگر = تقدم (precedence) بالاتری نسبت به عملگر and داره، در صورتی که علملگر && تقدم بالاتری نسبت به = داره، اما از اون‌جایی که پرانتز تقدمش از = بیشتره، پس اگر true and false رو بذاریم داخل پرانتز و بعد به یک متغیر نسبت بدیم، همون جوابی رو می‌گیریم که از && گرفتیم.یک سینتکس جایگزین برای if...esle مرسوم داریم؛ این سینتکس زمانی کاربرد داره که می‌خوایم از این ساختار داخل کدهای html استفاده کنیم؛ اگر از if...esle سنتی استفاده کرده باشید؛ می دونید که چه عذابیه، اما این ساختار کار رو خیلی راحت می‌کنه:ساختار جایگزین if...else سنتی شرطی‌های Yoda:یک شیوه برای بررسی شروط هست؛ تفاوتش با بررسی‌های مرسوم و سنتی اینه که متغیر در سمت راست قرار می‌گیره، این کمک می‌کنه که مثلا اگر به جای == از = استفاده کردیم، پارسر جلوی عملیات رو بگیره:Yoda Conditionalsساختار کوتاه شرطی:$message = $is_logged_in ? &quotWelcome Back!&quot : &quotHello There&quotاگر مقدار $is_logged_in برابر با true باشه، مقدار بعد از ؟ برمی‌گرده و اگر غلط باشه، مقدار بعد از :یه حرکت دیگه‌ای داریم به اسم operator الویس، که شبیه الویسه، اگر متغیر null باشه، مقدار بک‌آپ رو برمی‌گردونه:$name = $name ?: &quotJoe&quotساختار switch که بر مبنای یک سینگل variable میاد و موارد مختلفی رو بررسی می‌کنه:switch...caseما می‌تونیم توی ساختار switch...case دسته‌بندی یا گروهبندی هم داشته باشیم:گروه‌بندی switch...case در phpتابع rand توی php برای تولید اعداد تصادفی بین دو تا رنج مین و ماکز کاربرد داره.$random_value = rand($min, $max);