1-bo‘lim

PHP bilan tanishuv

PHP ni kim va nima uchun yaratgan, u qanday ishlaydi, JavaScript dan farqi va nima uchun bugun ham eng keng tarqalgan server tili.

🕑 12 daqiqa o‘qish 📄 1 192 so‘z 👁 5 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. PHP ni kim yaratgan?
  2. 1997: ikki talaba tilni qayta yozadi
  3. PHP qanday ishlaydi
  4. HTML bilan aralashtirish
  5. PHP qayerda ishlatiladi
  6. Birinchi haqiqiy dastur
  7. Bu darslikda nima bo'ladi
  8. Xulosa

Brauzerda ko'rgan sahifangiz kimdir tomonidan yozib berilgan bo'lishi kerak. PHP aynan shu ish bilan shug'ullanadi: u serverda ishlaydi va brauzerga tayyor HTML yuboradi.

PHP ni kim yaratgan? #

PHP

Rasmus Lerdorf (1968-)

PHP ning asoschisi. Daniya-Kanada dasturchisi. 1994-yilda u shunchaki o'z shaxsiy sahifasiga tashrif buyurganlarni sanash uchun kichik vositalar to'plamini yozdi va uni "Personal Home Page Tools" deb atadi.

U til yaratmoqchi emas edi. Keyinchalik o'zi shunday degan: "Men hech qachon dasturlash tili yozishni rejalashtirmaganman - qanday qilib yozishni ham bilmasdim".

Nom ikki marta o'zgargan
YilNomiMa'nosi
1994PHP ToolsPersonal Home Page Tools
1995PHP/FIPersonal Home Page / Forms Interpreter
1998PHPPHP: Hypertext Preprocessor

Uchinchi nom - rekursiv qisqartma: birinchi harfning o'zi "PHP" degani. Bu dasturchilar orasidagi an'anaviy hazil (xuddi GNU = "GNU's Not Unix" kabi).

Nomi "shaxsiy sahifa" bo'lib qolgan bo'lsa ham, bugun PHP bilan banklar, ijtimoiy tarmoqlar va yirik tijorat saytlari yoziladi.

1997: ikki talaba tilni qayta yozadi #

PHP/FI tez tarqaldi, lekin uning ichki tuzilishi zaif edi - u bir odamning shaxsiy vositasi bo'lib qolgan.

1997-yilda Isroildagi Texnion universiteti talabalari Andi Gutmans va Zeev Suraski uni elektron do'kon loyihasi uchun ishlatmoqchi bo'lishdi va yetarli emasligini ko'rishdi. Shunda ular tilning yuragini - tahlilchisini noldan qayta yozishdi.

Natija 1998-yilda PHP 3 sifatida chiqdi. Lerdorf loyihani ularga ochiq qo'ldan topshirdi - va bu PHP ni bir kishining vositasidan jamoa mahsulotiga aylantirdi.

1999-yilda ular yangi dvigatelni Zend deb atashdi - bu Zeev va Andi ismlarining birikmasi.

PHP ning yo'li 1994 PHP Tools 1998 PHP 3 - qayta yozildi 2004 PHP 5 - OOP 2010 PHP 6 - chiqmadi 2015 PHP 7 - 2x tez 2020 PHP 8 - turlar Bugun Har yili yangi Eski PHP - turlarsiz, tartibsiz Zamonaviy PHP - tez va qat'iy turli PHP 6 hech qachon chiqmadi - Unicode ni qo'shish urinishi muvaffaqiyatsiz tugadi. Shuning uchun 5 dan keyin darhol 7 keldi: chalkashlikning oldini olish uchun. Bu darslik PHP 8.2 ga asoslangan.
Shaxsiy sahifa hisoblagichidan jiddiy server tiligacha
Internetdagi eski PHP darsliklaridan ehtiyot bo'ling

PHP ning obro'siga eng ko'p zarar yetkazgan narsa - uning eski kodi. 2000-yillardagi qo'llanmalar hali ham qidiruvda birinchi o'rinlarda chiqadi.

Eski (ishlatmang)Zamonaviy
mysql_query()PDO
ereg()preg_match()
$HTTP_POST_VARS$_POST
Turlarsiz funksiyalarfunction f(int $a): string
array()[]
Qo'lda requireComposer avtoyuklash

Birinchi ustundagi narsalarning aksariyati tildan butunlay olib tashlangan. Agar topgan misolingizda mysql_query bo'lsa - u 2012-yildan eski va bugungi PHP da umuman ishlamaydi.

Bu darslikda faqat zamonaviy usul ko'rsatiladi.

PHP qanday ishlaydi #

Bu darslikdagi har bir misol quyidagi ikki qator bilan boshlanadigan faylda ishga tushirilgan:

PHP
<?php
declare(strict_types=1);

Birinchi qator - PHP kodi boshlanganini bildiradi. Ikkinchisi qat'iy turlar rejimini yoqadi: uni 3-bo'limda batafsil ko'ramiz. Qisqasi, u PHP ni jimgina tur almashtirishdan to'xtatadi va xatolarni erta ko'rsatadi.

Takrorlanmasligi uchun keyingi misollarda bu ikki qatorni yozmaymiz.

PHP
// Har bir misol qat'iy turlar rejimida ishlaydi.
PHP
// PHP kodi SERVERDA bajariladi va natija HTML ga aylanadi
$ism = "Husanboy";
$soat = 9;

$salom = $soat < 12 ? "Xayrli tong" : "Assalomu alaykum";

// date() ikkinchi argumentsiz HOZIRGI vaqtni oladi. Misol har safar
// bir xil chiqishi uchun biz unga aniq vaqt beramiz.
$vaqt = mktime(9, 0, 0, 9, 1, 2024);

echo "<h1>{$salom}, {$ism}!</h1>\n";
echo "<p>Sana: " . date("d.m.Y", $vaqt) . "</p>\n";

// Brauzer FAQAT quyidagi natijani oladi - PHP kodini ko'rmaydi
Natija
<h1>Xayrli tong, Husanboy!</h1>
<p>Sana: 01.09.2024</p>
PHP va JavaScript - ikkalasi ham kerak

Bu ikki til raqib emas, ular turli joyda ishlaydi:

PHPJavaScript
Qayerda ishlaydiServerdaBrauzerda
Foydalanuvchi ko'radimiYo'qHa, kodni o'qiy oladi
Ma'lumotlar bazasiga kira oladimiHaYo'q (to'g'ridan-to'g'ri)
Parollarni tekshiradimiHaHech qachon
Sahifa yuklangach ishlaydimiYo'qHa

Muhim xulosa: ishonchli tekshiruv faqat serverda bo'ladi. JavaScript dagi forma validatsiyasi - bu foydalanuvchiga qulaylik, himoya emas. Uni brauzerda o'chirib qo'yish mumkin.

Shuning uchun 9-bo'limda biz bir xil tekshiruvni PHP da qaytadan yozamiz.

Bitta so'rovning yo'li BRAUZER HTML, CSS, JS foydalanuvchi ko'radi 1. HTTP so'rov 4. tayyor HTML VEB-SERVER Apache / Nginx so'rovni yo'naltiradi 2. .php fayl 3. HTML matn PHP kodni bajaradi bazaga murojaat qiladi MA'LUMOTLAR BAZASI MySQL / PostgreSQL Brauzerga faqat NATIJA boradi - PHP kodining o'zi hech qachon yuborilmaydi. Shuning uchun parol, API kaliti va baza ma'lumotlari PHP da xavfsiz turadi.
PHP brauzerga emas, serverga tegishli

HTML bilan aralashtirish #

PHP
$mahsulotlar = [
    ["nom" => "Klaviatura", "narx" => 350000, "bor" => true],
    ["nom" => "Sichqoncha", "narx" => 120000, "bor" => true],
    ["nom" => "Monitor",    "narx" => 2400000, "bor" => false],
];

echo "<ul>\n";
foreach ($mahsulotlar as $m) {
    $holat = $m["bor"] ? "mavjud" : "tugagan";
    echo "  <li>{$m['nom']} - " . number_format($m["narx"], 0, ",", " ")
       . " so'm ({$holat})</li>\n";
}
echo "</ul>\n";
Natija
<ul>
  <li>Klaviatura - 350 000 so'm (mavjud)</li>
  <li>Sichqoncha - 120 000 so'm (mavjud)</li>
  <li>Monitor - 2 400 000 so'm (tugagan)</li>
</ul>
Bu HTML ni qo'lda yozish qancha vaqt olardi

Yuqorida uchta mahsulot bor edi. Agar ular uch ming bo'lsa ham kod aynan shu bo'lib qoladi - faqat ma'lumot manbasi o'zgaradi.

Aynan shu narsa PHP ni statik HTML dan ajratib turadi:

Statik HTMLPHP
Har bir sahifa qo'lda yoziladiBitta shablon, ko'p ma'lumot
Narx o'zgarsa - faylni tahrirlashBazada bitta qator o'zgaradi
Qidiruv ishlamaydiHar qanday filtr mumkin
Foydalanuvchi kirishi yo'qSessiya va huquqlar bor

16-bo'limda bu ro'yxatni ma'lumotlar bazasidan olamiz.

PHP qayerda ishlatiladi #

SohaMisollar
Kontent tizimlariWordPress, Drupal, Joomla
Elektron tijoratMagento, WooCommerce, PrestaShop
EnsiklopediyaWikipedia (MediaXiki dvigateli)
FreymvorklarLaravel, Symfony, CodeIgniter
Korporativ tizimlarCRM, ombor, buxgalteriya dasturlari
API xizmatlariMobil ilovalar uchun backend
Nima uchun PHP hali ham ustunlikni saqlab turibdi

Server tili ma'lum bo'lgan saytlarning katta ko'pchiligi bugun ham PHP da ishlaydi. Sabablari:

1. Har qanday hostingda bor. Eng arzon hosting ham PHP va MySQL beradi. Boshqa tillar uchun ko'pincha alohida server sozlash kerak.

2. WordPress. Faqat bitta bu tizim internetdagi saytlarning katta qismini tashkil qiladi - va u PHP da.

3. Orqaga moslik. 2005-yilda yozilgan sayt bugun ham ishlaydi. Bu ba'zan kamchilik, lekin biznes uchun katta qulaylik.

4. PHP 7 va 8 tilni tubdan yaxshiladi. Tezlik ikki barobar oshdi, qat'iy turlar, enum va match qo'shildi. Bugungi PHP 2010-yildagi PHP emas.

Birinchi haqiqiy dastur #

PHP
function narxniFormatla(int $tiyin): string
{
    return number_format($tiyin / 100, 2, ",", " ") . " so'm";
}

function chegirmaHisobla(int $narx, int $foiz): array
{
    $chegirma = (int) round($narx * $foiz / 100);
    return [
        "asl"      => $narx,
        "chegirma" => $chegirma,
        "yakuniy"  => $narx - $chegirma,
    ];
}

$buyurtmalar = [
    ["mijoz" => "Malika",   "summa" => 45000000, "foiz" => 10],
    ["mijoz" => "Nodira",   "summa" => 12500000, "foiz" => 0],
    ["mijoz" => "Husanboy", "summa" => 89900000, "foiz" => 15],
];

printf("%-10s %17s %15s %17s\n", "MIJOZ", "ASL", "CHEGIRMA", "YAKUNIY");
echo str_repeat("-", 62) . "\n";

$jami = 0;
foreach ($buyurtmalar as $b) {
    $h = chegirmaHisobla($b["summa"], $b["foiz"]);
    printf(
        "%-10s %17s %15s %17s\n",
        $b["mijoz"],
        narxniFormatla($h["asl"]),
        $h["chegirma"] > 0 ? narxniFormatla($h["chegirma"]) : "-",
        narxniFormatla($h["yakuniy"])
    );
    $jami += $h["yakuniy"];
}

echo str_repeat("-", 62) . "\n";
printf("%-10s %51s\n", "JAMI", narxniFormatla($jami));
Natija
MIJOZ                    ASL        CHEGIRMA           YAKUNIY
--------------------------------------------------------------
Malika       450 000,00 so'm  45 000,00 so'm   405 000,00 so'm
Nodira       125 000,00 so'm               -   125 000,00 so'm
Husanboy     899 000,00 so'm 134 850,00 so'm   764 150,00 so'm
--------------------------------------------------------------
JAMI                                         1 294 150,00 so'm
Pulni float da saqlamang

Yuqoridagi kodda summalar tiyinda, ya'ni butun sonda saqlangan. Bu tasodif emas.

PHP
var_dump(0.1 + 0.2 == 0.3);

Bu ifoda false qaytaradi - PHP da ham, boshqa deyarli barcha tillarda ham. Sabab: 0.1 ni ikkilik sanoq sistemasida aniq ifodalab bo'lmaydi.

Moliyaviy hisob-kitobda bu falokat: minglab amaldan keyin tiyinlar yo'qoladi va hisobot mos kelmaydi.

YondashuvTavsiya
float da so'mHech qachon
int da tiyinHa - eng oddiy yechim
string + bcmathJuda katta summalar uchun

Bu qoidani 3-bo'limda batafsil ko'ramiz.

Bu darslikda nima bo'ladi #

Bo'limlarMavzu
1-3Tanishuv, muhit, sintaksis va turlar
4-7Satrlar, massivlar, shartlar, funksiyalar
8-11Formalar, validatsiya, sessiyalar, fayllar
12-15OOP, vorislik, nomlar fazosi, istisnolar
16-18PDO va ma'lumotlar bazasi, xavfsizlik, JSON va API
19-20Zamonaviy PHP 8 va yakuniy loyiha
Amaliy topshiriq
  1. Brauzerda istalgan saytni oching va Ctrl+U bosing - PHP kodini ko'ryapsizmi?
  2. Nima uchun ko'rinmasligini o'z so'zlaringiz bilan tushuntiring.
  3. PHP nomining uch versiyasini eslab qoling.
  4. Nima uchun PHP 6 chiqmaganini ayting.
  5. mysql_query ishlatilgan qo'llanma topsangiz, uni nima uchun tashlab yuborish kerak?
  6. PHP va JavaScript qaysi vazifalarni bajarishini jadval qilib yozing.
  7. Parolni tekshirish qaysi tomonda bo'lishi kerak - brauzerdami yoki serverda?
  8. Bitta shablon ming mahsulotni qanday chiqarishini tushuntiring.
  9. Nima uchun pul float da saqlanmasligini ayting.
  10. Qog'ozga PHP bilan yaratmoqchi bo'lgan uchta g'oyangizni yozing.

Xulosa #

  • PHP ni 1994-yilda Rasmus Lerdorf shaxsiy sahifasi uchun kichik vosita sifatida yozgan.
  • 1997-yilda Andi Gutmans va Zeev Suraski tahlilchini noldan qayta yozib, PHP 3 ni yaratdi.
  • Zend dvigatelining nomi ularning ismlaridan olingan: Zeev + Andi.
  • PHP 6 hech qachon chiqmagan - Unicode urinishi muvaffaqiyatsiz tugadi, shuning uchun 5 dan keyin 7 keldi.
  • PHP 7 tezlikni ikki barobar oshirdi, PHP 8 qat'iy turlar va match ni keltirdi.
  • PHP serverda ishlaydi - brauzer faqat natijani oladi, kodni hech qachon ko'rmaydi.
  • Shuning uchun parol, kalit va baza ma'lumotlari PHP da xavfsiz turadi.
  • Ishonchli tekshiruv faqat serverda bo'ladi; JavaScript validatsiyasi - qulaylik, himoya emas.
  • Eski qo'llanmalardan ehtiyot bo'ling: mysql_query va ereg tildan olib tashlangan.
  • Pulni butun sonda (tiyinda) saqlang, float da emas.

Keyingi bo'limda muhitni sozlaymiz va PHP ni ikki xil - buyruq satri va veb-server orqali ishga tushiramiz.

Xatolik topdingizmi?

Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.