Hàm var_export() trong PHP dùng để làm gì?

24/06/2020 - lượt xem
Chia sẻ
 
Rate this post

Định Nghĩa.

Hàm var_export() trong PHP dùng để in thông tin của biến truyền vào, có cách sử dụng khá giống với hàm var_dump()

Cú pháp.

Cú pháp:

var_export ( mixed $expression [, bool $return = FALSE ] ) : mixed

Trong đó:

  • $expression là biến cần in ra thông tin.
  • Nếu để $return  = true  var_export() sẽ trả về đại diện của biến thay vì hiển thị nó.

Giá trị trả về.

  • Trả về đại diện của biến khi tham số trả về được sử dụng và đánh giá tại TRUE. Nếu không, hàm này sẽ trả về NULL.

Lưu ý: khi tham số return được sử dụng, hàm này sử dụng bên trong bộ đệm đầu ra, do đó không thể sử dụng nó trong hàm gọi lại ob_start ().

Sự thay đổi trên các phiên bản.

  • Trên phiên bản PHP 7.3.0 xuất các đối tượng stdClass dưới dạng một mảng được đúc thành một object ((object) array( ... )), thay vì sử dụng phương thức không tồn tại stdClass :: __ setState (). Hiệu quả thực tế là bây giờ stdClass có thể xuất được và mã kết quả sẽ hoạt động ngay cả trên các phiên bản trước của PHP.
  • Trên phiên bản PHP 5.1.0 làm cho nó có thể xuất các lớp và mảng chứa các lớp bằng  __set_state () magic method..

Ví dụ.

Ví dụ 1 dùng hàm var_export() bình thương.

code:

<?php
$a = array (1, 2, array ("a", "b", "c"));
var_export($a);
?>

Kết quả:

array (
  0 => 1,
  1 => 2,
  2 => 
  array (
    0 => 'a',
    1 => 'b',
    2 => 'c',
  ),
)

Ví dụ 2 dùng hàm var_export() có return.

code:

<?php
$person = new stdClass;
$person->name = 'codetutam.com';
$person->website = 'https://php.net/elephpant.php';

var_export($person);

Kết quả:

(object) array(
   'name' => 'codetutam.com',
   'website' => 'https://php.net/elephpant.php',
)

Ví dụ 3 Xuất các lớp (kể từ PHP 5.1.0)

code:

<?php
class A { public $var; }
$a = new A;
$a->var = 5;
var_export($a);
?>

kết quả:

A::__set_state(array(
   'var' => 5,
))

Ví dụ  4 Sử dụng __set_state () (kể từ PHP 5.1.0).

code:

<?php
class A
{
    public $var1;
    public $var2;

    public static function __set_state($an_array)
    {
        $obj = new A;
        $obj->var1 = $an_array['var1'];
        $obj->var2 = $an_array['var2'];
        return $obj;
    }
}

$a = new A;
$a->var1 = 5;
$a->var2 = 'foo';

eval('$b = ' . var_export($a, true) . ';'); // $b = A::__set_state(array(
                                            //    'var1' => 5,
                                            //    'var2' => 'foo',
                                            // ));
var_dump($b);
?>

Kết quả:

object(A)#2 (2) {
    ["var1"]=>
    int(5)
    ["var2"]=>
    string(3) "foo"
}

Chú ý.

  • Các biến loại resource không thể được xuất bởi chức năng này.
  • var_export () không quản lý các tham chiếu vòng tròn vì không thể tạo mã PHP có thể phân tích cho loại dữ liệu này. Nếu bạn muốn làm một cái gì đó với sự biểu diễn đầy đủ của một mảng hoặc đối tượng, hãy sử dụng hàm serialize ().
  • Khi var_export () xuất các đối tượng, dấu gạch chéo ngược hàng đầu không được bao gồm trong tên lớp của các lớp được đặt tên để tương thích tối đa.
  • Để có thể đánh giá PHP được tạo bởi var_export (), tất cả các đối tượng được xử lý phải thực hiện methode magic  __set_state. Ngoại lệ duy nhất là stdClass, được xuất bằng cách sử dụng một array được truyền tới một object.

Hàm liên quan.

  • serialize()– Tạo một đại diện có thể lưu trữ của một giá trị
  • var_dump() – Hiển thị thông tin về một biến
  • print_r() – In thông tin có thể đọc được của một biến.

Thông tin thêm.

  • Có vẻ như kể từ phiên bản 5.4.22 var_export sử dụng cài đặt ini serialize_precision, thay vì cài đặt chính xác được sử dụng cho đầu ra bình thường của các số dấu phẩy động.
    Do đó, kể từ phiên bản 5.4.22, ví dụ var_export (1.1) sẽ xuất 1.1000000000000001 (17 là giá trị chính xác mặc định) chứ không phải 1.1 như trước đây.

    <?php
    //ouput 1.1000000000000001
    var_export(1.1)
    ?>
  • Dường như không nhiều người nhắc đến điều này nhưng hành động của var_export() đã thay đổi ở PHP7 ví dụ Trước đây, `var_export (3.)` đã trả về “3”, bây giờ nó trả về “3.0”.

 

Các bạn có thể xem chi tiết hơn trên php.net.
Hi vọng với bài viết này, bạn đã hiểu rõ ứng dụng của hàm var_export() trong PHP. Nếu bạn thấy bài viết hay và có ý nghĩa hãy like và chia sẻ bài viết này để mọi người cùng nhau học tập nhé.
Cảm ơn các bạn đã ghé thăm codetutam.com

    Liên hệ với chúng tôi

    Để lại thông tin để nhận được các bài viết khác

    Rate this post

    Xem thêm nhiều bài tin mới nhất về Kiến thức

    Xem thêm