📚 សេចក្តីណែនាំ (Introduction)

សូមស្វាគមន៍មកកាន់មេរៀន PHP មូលដ្ឋាន! នៅក្នុងមេរៀននេះ អ្នកនឹងរៀនអំពី៖

💡 ចំណាំ៖ រាល់ output ដែលបង្ហាញខាងក្រោមគឺជា output ពិតប្រាកដ ដែលប្រតិបត្តិដោយ PHP 8.2.30

① PHP Syntax មូលដ្ឋាន

1.1 ស្លាក PHP (PHP Tags)

📖 គោលគំនិត (Concept):

កូដ PHP ទាំងអស់ត្រូវសរសេរនៅក្នុងស្លាក <?php ... ?>។ PHP ដំណើរការនៅលើ server ហើយបញ្ជូន HTML ទៅ browser។

<?php
  echo "សួស្តី ពិភពលោក! (Hello World!)";
?>

🖥️ Output:

សួស្តី ពិភពលោក! (Hello World!)

1.2 បង្ហាញលទ្ធផល (echo) និង Comment

📖 គោលគំនិត:

echo ប្រើសម្រាប់បង្ហាញអត្ថបទនៅលើទំព័រ។ Comment ប្រើសម្រាប់កត់ចំណាំ — PHP មិនដំណើរការ comment ទេ។

  • // — comment មួយបន្ទាត់ (single-line)
  • /* ... */ — comment ច្រើនបន្ទាត់ (multi-line)
  • រាល់សេចក្តីថ្លែង (statement) ត្រូវបញ្ចប់ដោយ ; (semicolon)
<?php
// នេះជា comment មួយបន្ទាត់
echo "ខ្ញុំកំពុងរៀន PHP";   // semicolon នៅចុង

/* នេះជា comment
   ច្រើនបន្ទាត់ */
echo " — វាសប្បាយណាស់!";
?>

🖥️ Output:

ខ្ញុំកំពុងរៀន PHP — វាសប្បាយណាស់!

1.3 ការផ្សំអត្ថបទ (Concatenation) និង PHP + HTML

📖 គោលគំនិត:

សញ្ញា . (dot) ប្រើសម្រាប់ផ្សំអត្ថបទ (string concatenation)។ អ្នកអាចលាយ PHP ជាមួយ HTML បាន។

<?php
$firstName = "សុខ";
$lastName  = "ចាន់";

// ផ្សំអត្ថបទដោយប្រើ dot (.)
echo "ឈ្មោះពេញ: " . $firstName . " " . $lastName;
?>

<!-- PHP ក្នុង HTML -->
<p>ថ្ងៃនេះជាថ្ងៃ <?php echo date('l'); ?></p>

🖥️ Output:

ឈ្មោះពេញ: សុខ ចាន់

ថ្ងៃនេះជាថ្ងៃ Saturday

② អថេរ (Variables)

2.1 អថេរជាអ្វី? (What is a Variable?)

📖 គោលគំនិត:

អថេរ (variable) គឺជា "ប្រអប់" សម្រាប់ផ្ទុកទិន្នន័យ។ ក្នុង PHP អថេរចាប់ផ្តើមដោយ $

  • ចាប់ផ្តើមដោយ $ បន្ទាប់មកជាអក្សរ ឬ underscore _
  • មិនអាចចាប់ផ្តើមដោយលេខ (e.g., $1name ❌)
  • Case-sensitive: $Name$name
<?php
$name = "វិចិត្រា";     // string
$age  = 20;            // integer
$gpa  = 3.75;          // float

echo "ឈ្មោះ: $name";
echo "<br>";
echo "អាយុ: $age ឆ្នាំ";
echo "<br>";
echo "មធ្យមភាគ: $gpa";
?>

🖥️ Output:

ឈ្មោះ: វិចិត្រា

អាយុ: 20 ឆ្នាំ

មធ្យមភាគ: 3.75

2.2 Interpolation ទល់នឹង Concatenation

📖 គោលគំនិត:

មានពីរវិធីក្នុងការបញ្ចូលអថេរក្នុង string៖

  • Interpolation — ដាក់អថេរផ្ទាល់ក្នុង double quote "..."
  • Concatenation — ផ្សំដោយប្រើ dot .
  • Single quote '...' មិន interpret អថេរទេ!
<?php
$subject = "PHP";
$year    = 2;

// Interpolation (double quotes)
echo "ខ្ញុំរៀន $subject ឆ្នាំទី $year";
echo "<br>";

// Concatenation (dot)
echo 'ខ្ញុំរៀន ' . $subject . ' ឆ្នាំទី ' . $year;
echo "<br>";

// Single quote — មិន interpret ទេ
echo 'ខ្ញុំរៀន $subject ឆ្នាំទី $year';
?>

🖥️ Output:

ខ្ញុំរៀន PHP ឆ្នាំទី 2

ខ្ញុំរៀន PHP ឆ្នាំទី 2

ខ្ញុំរៀន $subject ឆ្នាំទី $year (single quote — មិន interpret)

③ ថេរ (Constants)

3.1 define() និង const

📖 គោលគំនិត:

ថេរ (constant) គឺជាតម្លៃដែល មិនអាចប្តូរ បានបន្ទាប់ពីកំណត់រួចហើយ។

  • define("NAME", value) — ប្រើបានគ្រប់កន្លែង
  • const NAME = value; — ប្រើនៅ top-level scope
  • ទម្លាប់តែងសរសេរជា UPPERCASE (អក្សរធំ)
  • មិនប្រើ $ នៅពីមុខឈ្មោះទេ
<?php
// វិធីទី 1: define()
define("SCHOOL_NAME", "សាកលវិទ្យាល័យភ្នំពេញ");
define("MAX_STUDENTS", 50);

// វិធីទី 2: const
const TAX_RATE = 0.10;

echo "សាលា: " . SCHOOL_NAME;
echo "<br>";
echo "សិស្សអតិបរមា: " . MAX_STUDENTS . " នាក់";
echo "<br>";
echo "អត្រាពន្ធ: " . (TAX_RATE * 100) . "%";
?>

🖥️ Output:

សាលា: សាកលវិទ្យាល័យភ្នំពេញ

សិស្សអតិបរមា: 50 នាក់

អត្រាពន្ធ: 10%

💡 ពេលណាគួរប្រើថេរ?

  • តម្លៃដែលមិនផ្លាស់ប្តូរ (e.g., ឈ្មោះសាលា, អត្រាពន្ធ, PI)
  • ការកំណត់រចនាសម្ព័ន្ធ (configuration values)
  • សម្រាប់ define() ទល់នឹង const: ប្រើ define() ពេលត្រូវការ dynamic ឬ ក្នុង conditionals; ប្រើ const នៅ class level

④ ប្រភេទទិន្នន័យ (Data Types)

4.1 ប្រភេទទិន្នន័យសំខាន់ៗ

📖 គោលគំនិត:

PHP មានប្រភេទទិន្នន័យជាច្រើន។ នេះជា 6 ប្រភេទសំខាន់សម្រាប់អ្នកចាប់ផ្តើម៖

ប្រភេទ (Type) ការពិពណ៌នា ឧទាហរណ៍
stringអត្ថបទ (text)"សួស្តី"
integerលេខគត់ (whole number)42
floatលេខទសភាគ (decimal)3.14
booleanពិត ឬ មិនពិតtrue / false
arrayបញ្ជីតម្លៃច្រើន[1, 2, 3]
NULLគ្មានតម្លៃ (no value)null

4.2 ពិនិត្យប្រភេទទិន្នន័យ — gettype() និង var_dump()

📖 គោលគំនិត:

  • gettype($var) — ត្រឡប់ប្រភេទជា string (e.g., "integer")
  • var_dump($var) — បង្ហាញប្រភេទ + តម្លៃ + ទំហំ (detail)
<?php
$text    = "Hello PHP";
$number  = 100;
$decimal = 9.99;
$flag    = true;
$fruits  = ["ផ្លែមៀន", "ផ្លែចេក"];
$empty   = null;

echo "gettype(\$text)    = " . gettype($text);
echo "<br>";
echo "gettype(\$number)  = " . gettype($number);
echo "<br>";
echo "gettype(\$decimal) = " . gettype($decimal);
echo "<br>";
echo "gettype(\$flag)    = " . gettype($flag);
echo "<br>";
echo "gettype(\$fruits)  = " . gettype($fruits);
echo "<br>";
echo "gettype(\$empty)   = " . gettype($empty);
echo "<hr>";

echo "<strong>var_dump() results:</strong><br>";
var_dump($text);
echo "<br>";
var_dump($number);
echo "<br>";
var_dump($decimal);
echo "<br>";
var_dump($flag);
echo "<br>";
var_dump($fruits);
echo "<br>";
var_dump($empty);
?>

🖥️ Output:

gettype($text) = string

gettype($number) = integer

gettype($decimal) = double

gettype($flag) = boolean

gettype($fruits) = array

gettype($empty) = NULL


var_dump() results:

string(9) "Hello PHP"

int(100)

float(9.99)

bool(true)

array(2) {
  [0]=>
  string(21) "ផ្លែមៀន"
  [1]=>
  string(21) "ផ្លែចេក"
}

NULL

🧪 សាកល្បងដោយខ្លួនឯង (Interactive Demo)

🔍 ពិនិត្យប្រភេទទិន្នន័យ

វាយតម្លៃមួយ ហើយ PHP នឹងបង្ហាញប្រភេទ និង var_dump របស់វា៖

🎯 ជ្រើសរើសប្រភេទទិន្នន័យ

ជ្រើសរើសប្រភេទមួយ ហើយមើល output ពិត៖

📝 លំហាត់អនុវត្ត (Practice Questions)

ព្យាយាមឆ្លើយសំណួរខាងក្រោម។ ចុច "បង្ហាញចម្លើយ" ដើម្បីពិនិត្យ។

❓ សំណួរទី 1 (Multiple Choice):

តើស្លាកណាមួយដែលត្រឹមត្រូវសម្រាប់សរសេរកូដ PHP?

A. <php> ... </php>

B. <?php ... ?>

C. <script php> ... </script>

D. <% ... %>

🔑 បង្ហាញចម្លើយ

ចម្លើយ: B<?php ... ?> គឺជាស្លាក PHP ស្តង់ដារ។

❓ សំណួរទី 2 (Short Answer):

តើអ្វីជាភាពខុសគ្នារវាង // និង /* */?

🔑 បង្ហាញចម្លើយ

ចម្លើយ: // ជា comment មួយបន្ទាត់ (single-line)។ /* */ ជា comment ច្រើនបន្ទាត់ (multi-line)។ ទាំងពីរមិនត្រូវបានប្រតិបត្តិដោយ PHP ទេ។

❓ សំណួរទី 3 (Multiple Choice):

តើឈ្មោះអថេរណាមួយខាងក្រោមដែល មិនត្រឹមត្រូវ?

A. $myName

B. $_age

C. $2ndPlace

D. $total_price

🔑 បង្ហាញចម្លើយ

ចម្លើយ: C$2ndPlace មិនត្រឹមត្រូវទេ ព្រោះអថេរមិនអាចចាប់ផ្តើមដោយលេខបានទេ។

❓ សំណួរទី 4 (Short Answer):

តើកូដខាងក្រោមបង្ហាញអ្វី?

<?php
$x = "PHP";
echo 'I love $x';
?>
🔑 បង្ហាញចម្លើយ

ចម្លើយ: បង្ហាញ I love $x — នៅក្នុង single quote, PHP មិន interpret អថេរទេ។ អ្នកត្រូវប្រើ double quote ឬ concatenation។

❓ សំណួរទី 5 (Multiple Choice):

តើមធ្យោបាយណាខាងក្រោមដែលប្រើកំណត់ថេរ (constant)?

A. $PI = 3.14;

B. define("PI", 3.14);

C. constant PI = 3.14;

D. set("PI", 3.14);

🔑 បង្ហាញចម្លើយ

ចម្លើយ: Bdefine("PI", 3.14); គឺជាវិធីត្រឹមត្រូវក្នុងការកំណត់ថេរ។ ជម្រើស A ជាអថេរធម្មតា មិនមែនថេរ។

❓ សំណួរទី 6 (Short Answer):

តើ gettype(3.14) ត្រឡប់តម្លៃអ្វី?

🔑 បង្ហាញចម្លើយ

ចម្លើយ: "double" — PHP ហៅ float ថា "double" នៅក្នុង gettype()។ ការបញ្ជាក់៖ double

❓ សំណួរទី 7 (Multiple Choice):

តើ var_dump(true) បង្ហាញអ្វី?

A. string(4) "true"

B. bool(true)

C. int(1)

D. boolean: true

🔑 បង្ហាញចម្លើយ

ចម្លើយ: Bvar_dump(true) បង្ហាញ bool(true)។ ការផ្ទៀង៖ bool(true)

❓ សំណួរទី 8 (Short Answer):

សរសេរកូដ PHP ដែលកំណត់ថេរឈ្មោះ APP_NAME មានតម្លៃ "My Website" រួចបង្ហាញវា។

🔑 បង្ហាញចម្លើយ

ចម្លើយ:

<?php
define("APP_NAME", "My Website");
echo APP_NAME;
?>

ឬដោយប្រើ const:

<?php
const APP_NAME = "My Website";
echo APP_NAME;
?>

❓ សំណួរទី 9 (Multiple Choice):

តើសញ្ញាណាមួយប្រើសម្រាប់ concatenation ក្នុង PHP?

A. +

B. &

C. . (dot)

D. , (comma)

🔑 បង្ហាញចម្លើយ

ចម្លើយ: C — សញ្ញា . (dot) ប្រើសម្រាប់ផ្សំ (concatenate) strings ក្នុង PHP។

❓ សំណួរទី 10 (Short Answer):

តើអ្វីជាភាពខុសគ្នាសំខាន់រវាងអថេរ (variable) និងថេរ (constant)?

🔑 បង្ហាញចម្លើយ

ចម្លើយ: អថេរ (variable) អាចផ្លាស់ប្តូរតម្លៃបានគ្រប់ពេល (e.g., $x = 5; $x = 10;)។ ថេរ (constant) កំណត់តម្លៃម្តងហើយ មិនអាចប្តូរបានទៀតទេ។ អថេរប្រើ $, ថេរមិនប្រើ $

🔐 ចម្លើយទាំងអស់ (Full Answer Key) — ចុចដើម្បីបើក
សំណួរ ប្រភេទ ចម្លើយ
1 Multiple Choice B<?php ... ?>
2 Short Answer // = single-line, /* */ = multi-line
3 Multiple Choice C$2ndPlace (មិនអាចចាប់ផ្តើមដោយលេខ)
4 Short Answer I love $x (single quote មិន interpret variable)
5 Multiple Choice Bdefine("PI", 3.14);
6 Short Answer "double"
7 Multiple Choice Bbool(true)
8 Short Answer define("APP_NAME", "My Website"); echo APP_NAME;
9 Multiple Choice C. (dot)
10 Short Answer Variable ផ្លាស់ប្តូរបាន, Constant ផ្លាស់ប្តូរមិនបាន។ Variable ប្រើ $, Constant មិនប្រើ $។