Căn 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 - ...
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 sử 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__ . "'. "; // This prints file full path, without file name echo "This file full path is '" . __DIR__ . "'. "; // This prints current line number on file echo "This is line number " . __LINE__ . ". "; // Really simple basic test function function test_function_magic_constant() { echo "This is from '" . __FUNCTION__ . "' function. "; } // 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. "; } // Prints class and method name public function printMethodName() { echo "This is " . __METHOD__ . " method. "; } // Prints function name public function printFunction() { echo "This is function '" . __FUNCTION__ . "' inside class. "; } // Prints namespace name (works only with PHP 5.3) public function printNamespace() { echo "Namespace name is '" . __NAMESPACE__ . "'. "; } } // 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 est_function_magic_constant' function. This is TestProjectTestMagicConstants class. This is TestProjectTestMagicConstants::printMethodName method. This is function 'printFunction' inside class. Namespace name is 'TestProject'.
Cách chuyể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 chuyể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 sử dụng các Array và Objects đa chiều.
Bài này định nghĩa hai hàm đệ quy cực kỳ đơn giản để chuyển đổi các Objects Đa chiều thành Array và Array đa chiều thành Objects.
Chức năng Chuyể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; } }
Chuyể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 " "; print_r($array); echo " "; 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 )