នៅ​ក្នុង​ភាសា PHP ដែន​កំណត់​ត្រូវ​ចែក​ចេញ​ជា​ ៣ ប្រភេទ​គឺ ដែន​កំណត់​ក្រៅ (global scope) ដែន​កំណត់​ក្នុង (local scope) និង ដែន​កំណត់​ថេរ (static scope) ។

 

ដែន​កំណត់​ក្រៅ គឺ​ជា​ទីកន្លែង​នៅ​ខាង​ក្រៅ​ក្បួន ហើយ​បណ្តា​អថេរ​ទាំងឡាយ​ណា​ដែល​ត្រូវ​បាន​បង្កើត​ឡើង​នៅ​ក្នុង​ដែន​កំណត់​ក្រៅ នឹង​មិន​អាច​ត្រូវ​យក​ទៅ​ប្រើ​នៅ​ក្នុង​ក្បួន​ដែល​ជា​ដែន​កំណត់​ក្នុង​បាន​ឡើយ​។ ចំណែក​ឯ​ដែន​កំណត់​ថេរ វិញ គឺ​ជា​ទីកន្លែង​មួយ​ទៀត​នៅ​ក្នុង​ក្បួន ដែល​អថេរ​ទាំងឡាយ​ត្រូវ​បាន​បង្កើត​ឡើង​ដោយ​មាន​ពាក្យ​ពិសេស​ថា static នៅ​ពី​មុខ​។

 

មួយវិញទៀត ​អថេរ​ស្ថិត​ក្នុង​ដែន​កំណត់​ថេរ នឹង​មិន​ត្រូវ​លុប​ចេញ​វិញ​ដោយ​ស្វ័យប្រវវត្តិ​ឡើយ នៅ​ពេល​ដែល​ក្បួន​ត្រូវ​យក​ទៅ​ប្រើ​រួច​ហើយ​នោះ​។ ពិនិត្យ​កម្មវិធី​ខាង​ក្រោម​នេះ៖

 

<!DOCTYPE html>
<html>
  <hea>
    <link href='https://fonts.googleapis.com/css?family=Odor+Mean+Chey' rel='stylesheet'>
  </hea>
  <body style="font:14px/1.5 'Odor Mean Chey'">

    <?php
      $width = 1000;
      $height = 500;
      
      function myFunc(){
        $width = 900;
        static $height = 600;

        echo "<br>";
        echo "នៅ​ក្នុង​ដែន​កំណត់​ក្នុង​អថេរ \$width គឺ​ជា​លេខ៖ ".$width;
        echo '<br>';
      }

      function myFunc1(){
        static $time = 1;

        echo "លើក​ទី​ ".$time." ​អថេរ \$time គឺ​ជា​លេខ៖ ".$time++;
        echo "<br>";
      }

      echo "នៅ​ក្នុង​ដែន​កំណត់​ក្រៅ​អថេរ \$width គឺ​ជាលេខ៖ ".$width;
      myFunc();
      myFunc1();
      myFunc1();
    ?>

  </body>
</html>

 

នៅ​ក្នុង​កម្មវិធី​ខាង​លើ​នេះ យើង​ឃើញ​ថា​អថេរ​ឈ្មោះ $width នៅ​ក្នុង​ដែនកំណត់​ក្រៅ​និង​អថេរ​ឈ្មោះ $width នៅ​ក្នុង​ដែន​កំណត់​ក្នុង គឺ​ជា​អថេរ​ពីរ​ខុស​គ្នា ទោះ​បី​ជា​វា​មាន​ឈ្មោះ​ដូច​គ្នា​ក៏​ដោយ​ គឺ​ដូច​គ្នា​នឹង​អថេរ​នៅ​ក្នុង​ភាសា JS ដែរ​។ តែ​ភាព​ខុស​គ្នា​រវាង​ភាសា​ទាំងពីរ​នេះ​គឺ​ថា នៅ​ក្នុង​ភាសា PHP អថេរ​នៅ​ក្នុង​ដែនកំណត់​ក្រៅ មិន​អាច​ត្រូវ​បាន​យក​ទៅ​ប្រើ​នៅ​ក្នុង​ដែន​កំណត់​ក្នុង​បាន​ឡើយ​។

 

ហើយ​បើ​និយាយ​ពី​រឿង​ដែន​កំណត់​ថេរ​នៅ​ក្នុង​ភាសា PHP វិញ គឺ​ជា​រឿង​ថ្មី​មួយ សំរាប់​អ្នក​មក​ពី​ភាសា JS ។ ជាក់ស្តែង អថេរ​ឈ្មោះ $time នៅ​ក្នុង​កម្មវិធី​ខាង​លើ​ មិន​ត្រូវ​បាន​លុប​ចេញ​ពី​សតិ​របស់​កំព្យូទ័រ​ឡើយ នៅ​ពេល​ដែល​ក្បួន​ឈ្មោះ myFunc1 ត្រូវ​បាន​យក​ទៅ​ប្រើ​ម្តង​រួច​ហើយ ព្រោះ​អថេរ​នេះ​ត្រូវ​បាន​បង្កើត​ឡើង​និង​ទុក​នៅ​ក្នុង​ដែនកំណត់​ថេរ​នៅ​ក្នុង​ក្បួន​នេះ​។ ហើយ​នៅ​ពេល​ដែល​ក្បួន myFunc1 ត្រូវ​យក​ទៅ​ប្រើ​ជា​លើក​ទី ២ តំលៃ​លេខ​ចាស់​របស់​អថេរ $time ដែល​ជា​លទ្ធផល​ពី​ការយក​ក្បួន myFunc1 មក​ប្រើ​នៅ​លើក​ទី ១ ត្រូវ​បាន​យក​មក​ប្រើ​។

 

ក៏ប៉ុន្តែ ទោះ​ជា​យ៉ាងណា​ក៏ដោយ ក៏​ភាសា PHP ផ្តល់​មធ្យោបាយ​អោយ​យើង​មួយ​ចំនួន ក្នុង​ការយក​អថេរ​នៅ​ក្នុង​ដែនកំណត់​ក្រៅ មក​ប្រើ​នៅ​ក្នុង​ដែន​កំណត់​ក្នុង​បាន​ដែរ​។ មធ្យោបាយ​ទាំងនោះ​គឺ​ការប្រើប្រាស់​បញ្ជា​ global និង​សំណុំ​មាន​ស្រាប់ $GLOBALS ។ ពិនិត្យ​កម្មវិធី​ខាង​ក្រោម​នេះ៖

 

<!DOCTYPE html>
<html>
  <hea>
    <link href='https://fonts.googleapis.com/css?family=Odor+Mean+Chey' rel='stylesheet'>
  </hea>
  <body style="font:14px/1.5 'Odor Mean Chey'">

    <?php
      $width = 1000;
      $height = 500;
      
      function myFunc(){
        global $width;
        static $height = 600;

        echo "<br>";
        echo "នៅ​ក្នុង​ដែន​កំណត់​ក្នុង​អថេរ \$width គឺ​ជា​លេខ៖ ".$width;
        echo '<br>';
        echo "នៅ​ក្នុង​ដែន​កំណត់​ក្នុង​អថេរ \$height គឺ​ជា​លេខ៖ ".$GLOBALS['height'];
        echo '<br>';
      }

      function myFunc1(){
        static $time = 1;

        echo "លើក​ទី​ ".$time." ​អថេរ \$time គឺ​ជា​លេខ៖ ".$time++;
        echo "<br>";
      }

      echo "នៅ​ក្នុង​ដែន​កំណត់​ក្រៅ​អថេរ \$width គឺ​ជាលេខ៖ ".$width;
      echo "<br>";
      echo "នៅ​ក្នុង​ដែន​កំណត់​ក្រៅ​អថេរ \$height គឺ​ជាលេខ៖ ".$height;
      myFunc();
      myFunc1();
      myFunc1();
    ?>

  </body>
</html>