cơ bản PHP

Constain PHP

PHP có số lượng lớn các hằng số định sẵn. Bài này sẽ trình bày bảy điều quan trọng nhất, thiết thực nhất và hữu ích nhất PHP Magic Constants.

FILE – Đường dẫn đầy đủ và tên tập tin của tệp.
DIR – Thư mục của tập tin.
FUNCTION – Tên chức năng.
CLASS – Tên lớp.
METHOD – Tên phương thức của lớp.
LINE – Số dòng hiện tại của tệp.
NAMESPACE – Tên của không gian tên hiện tại
Đây là ví dụ về PHP, cách dùng tất cả các PHP Constant được nhắc đến trước đó.

<?php      // Set namespace (works only with PHP 5.3)     namespace TestProject;      // This prints file full path and name     echo "This file full path and file name is '" . __FILE__ . "'.\n";      // This prints file full path, without file name     echo "This file full path is '" . __DIR__ . "'.\n";      // This prints current line number on file     echo "This is line number " . __LINE__ . ".\n";      // Really simple basic test function     function test_function_magic_constant() {         echo "This is from '" . __FUNCTION__ . "' function.\n";     }      // Prints function and used namespace     test_function_magic_constant();      // Really simple class for testing magic constants     class TestMagicConstants {         // Prints class name         public function printClassName() {             echo "This is " . __CLASS__ . " class.\n";         }          // Prints class and method name         public function printMethodName() {             echo "This is " . __METHOD__ . " method.\n";         }          // Prints function name         public function printFunction() {             echo "This is function '" . __FUNCTION__ . "' inside class.\n";         }          // Prints namespace name (works only with PHP 5.3)         public function printNamespace() {             echo "Namespace name is '" . __NAMESPACE__ . "'.\n";         }     }      // Create new TestMagicConstants class     $test_magic_constants = new TestMagicConstants;      // This prints class name and used namespace     $test_magic_constants->printClassName();      // This prints method name and used namespace     $test_magic_constants->printMethodName();      // This prints function name inside class and used namespace     // same as method name, but without class     $test_magic_constants->printFunction();      // This prints namespace name (works only with PHP 5.3)     $test_magic_constants->printNamespace();  ?> 

output

This file full path and file name is '/tmp/magic_constants/magic.php'. This file full path is '/tmp/magic_constants'. This is line number 13. This is from 'TestProject\test_function_magic_constant' function. This is TestProject\TestMagicConstants class. This is TestProject\TestMagicConstants::printMethodName method. This is function 'printFunction' inside class. Namespace name is 'TestProject'. 

Cách biến đổi stdClass sang Array và Array sang stdClass:

Tôi nghĩ rằng tất cả các lập trình PHP đã đến qua Array và stdClass Objects. Đôi khi nó rất hữu ích biến đổi các Objects sang Array và Array sang Objects. Điều này rất dễ nếu các Array và các Objects là một chiều, nhưng có thể rất khó nếu dùng các Array và Objects đa chiều.

Bài này được hiểu hai hàm đệ quy cực kỳ dễ hiểu để biến đổi các Objects Đa chiều thành Array và Array đa chiều thành Objects.

chức năng biến đổi các Objects stdClass sang Array đa chiều

<?php      function objectToArray($d) {         if (is_object($d)) {             // Gets the properties of the given object             // with get_object_vars function             $d = get_object_vars($d);         }                  if (is_array($d)) {             /*             * Return array converted to object             * Using __FUNCTION__ (Magic constant)             * for recursive call             */             return array_map(__FUNCTION__, $d);         }         else {             // Return array             return $d;         }     } 

biến đổi các Array sang Objects stdClass

<?php      function arrayToObject($d) {         if (is_array($d)) {             /*             * Return array converted to object             * Using __FUNCTION__ (Magic constant)             * for recursive call             */             return (object) array_map(__FUNCTION__, $d);         }         else {             // Return object             return $d;         }     } 

ví dụ:

// Create new stdClass Object     $init = new stdClass;      // Add some test data     $init->foo = "Test data";     $init->bar = new stdClass;     $init->bar->baaz = "Testing";     $init->bar->fooz = new stdClass;     $init->bar->fooz->baz = "Testing again";     $init->foox = "Just test";      // Convert array to object and then object back to array     $array = objectToArray($init);     $object = arrayToObject($array);      // Print objects and array     print_r($init);     echo "\n";     print_r($array);     echo "\n";     print_r($object); 

kết quả:

stdClass Object (     [foo] => Test data     [bar] => stdClass Object         (             [baaz] => Testing             [fooz] => stdClass Object                 (                     [baz] => Testing again                 )          )      [foox] => Just test )  Array (     [foo] => Test data     [bar] => Array         (             [baaz] => Testing             [fooz] => Array                 (                     [baz] => Testing again                 )          )      [foox] => Just test )  stdClass Object (     [foo] => Test data     [bar] => stdClass Object         (             [baaz] => Testing             [fooz] => stdClass Object                 (                     [baz] => Testing again                 )          )      [foox] => Just test ) 

Nguồn viblo.asia