12/08/2018, 15:05

Một số điều thú vị của PHP có thể bạn ít dùng

Mình xin đưa ra một số trường hợp khá thú vị của PHP mà có thể bạn ít dùng, và có lẽ bạn không nên dùng =)) $$ Chúng ta đều biết rằng biến của PHP được gọi bắt đầu từ dấu $: $a = 10 ; echo $a ; Kết quả ra màn hình sẽ là 10 rồi nhỉ. Vậy còn trường hợp này thì bạn nghĩ sao? ...

Mình xin đưa ra một số trường hợp khá thú vị của PHP mà có thể bạn ít dùng, và có lẽ bạn không nên dùng =))

$$

Chúng ta đều biết rằng biến của PHP được gọi bắt đầu từ dấu $:

$a = 10;
echo $a;

Kết quả ra màn hình sẽ là 10 rồi nhỉ. Vậy còn trường hợp này thì bạn nghĩ sao?

$a = 10;
$b = 'a';
echo $$b;

Rồi nhiều $ nữa thì có được không nhỉ?

$a = 10;
$b = 'a';
$c = 'b';
echo $$$c;

Mời các bạn test và trải nghiệm.

Nếu bạn vô tình đọc code của ai đó mà thấy $$ thì có lẽ bạn sẽ nghĩ họ code lỗi ấy nhỉ?

file_get_contents()

Có lẽ bạn đã biết hàm này, nó có thể đọc nội dung của một file nào đó rồi trả về string:

$fileContent = file_get_contents($fileName);

Thậm chí nó còn có thể lấy được nội dung của một web nào đó:

$google = file_get_contents('http://www.google.com.vn/');

Nếu bạn muốn post một dữ liệu gì đó lên URL nào đó, có lẽ bạn sẽ nghĩ đến cURL, nhưng bạn có biết file_get_contents() cũng có thể làm được điều này?

$postData = http_build_query([
    'username' => 'someone',
    'password' => 'secret',
];

$options = [
    'http' => [
        'method'  => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => $postData,
    ]
];
$context  = stream_context_create($options);
$output = file_get_contents('http://example.com/submit.php', false, $context);

Call a method of class

Nếu bạn muốn gọi một method (giả sử là static method) của một class A nào đó, bạn có thể gọi bằng những cách nào? VD class A:

class A
{
    public static function talk()
    {
        echo "I'm A";
    }
}

Cách truyền thống có lẽ là đây nhỉ?

A::talk();

Tiếp, có lẽ bạn cũng đã từng thấy cách này nhỉ:

$class = 'A';
$class::talk();

hoặc...

$class = 'A';
$method = 'talk';
$class::$method();

Oki, mạnh tay hơn cách trên, bạn đã thử hay thấy ai đó dùng cách này chưa?

'A'::talk();

hoặc...

$method = 'talk';
'A'::$method();

Yeah, và có lẽ chúng ta cũng nên kể đến cả hàm hỗ trợ sẵn của PHP nhỉ?

call_user_func(['A', 'talk']);

hoặc...

call_user_func_array(['A', 'talk'], []);

Không chỉ dừng lại ở đây, bạn có thể sẽ ngạc nhiên khi PHP cũng có thể gọi bằng cách này:

$func = 'A::talk';
$func(); // PHP >= 7.0.0

hoặc...

$func = ['A', 'talk'];
$func();

Object Reference

Khi $a là một Object và $b = $a thì $b chứa cái gì của Object? $b có giống hoàn toàn $a không? Và nó khác gì so với $b = &$a không? VD đoạn code sau:

class A
{
    public $x;
}

$a = new A();
$a->x = 10;

$b = $a;
$b->x = 20;

echo $a->x;

Có lẽ nhiều bạn sẽ trả lời được rằng kết quả in ra màn hình sẽ là 20 nhỉ. Ok, vậy ví dụ này, bạn nghĩ nó sẽ in ra màn hình bao nhiêu?

class A
{
    public $x;
}

$a = new A();
$a->x = 10;

$b = $a;
$b = new A();
$b->x = 20;

echo $a->x;

10 hay 20 nhỉ? Kết quả là 10 bạn nhé. Vì lúc $b = new A(); thì $b sẽ trỏ tới đối tượng khác, không liên quan tới $a nữa. Rồi, vậy còn trường hợp này thì sao? (Khác nhau ở đoạn gán $a cho $b

class A
{
    public $x;
}

$a = new A();
$a->x = 10;

$b = &$a;
$b = new A();
$b->x = 20;

echo $a->x;

Bạn tự test để kiểm tra nhé             </div>
            
         </div>
      </div>
      
      
      <div class=

Bài liên quan

Một số câu hỏi 'mẹo' có thể gặp khi phỏng vấn Frontend Developer

Bạn đã bao giờ vào trang web yêu thích của mình và để ý đến cách mà trang web đó được bố cục như thế nào chưa? Các “button” sẽ “phản ứng” ra sao sau khi bạn click chuột vào đó? Và những điều tương tự như thế. Tất cả điều này gói gọn trong Frontend Development. Thiết kế web ...

Tạ Quốc Bảo viết 18:18 ngày 07/09/2018

17 Sự Thật Thú Vị Về Wordpress Có Thể Bạn Chưa Biết

Wordpress Ra Đời Trước Facebok và Twitter Phiên bản đầu tiên của Wordpress được trình làng vào ngày 27/05/2003, điều này có nghĩa là Wordpress tồn tại trước cả Facebook và Twitter. Tên Wordpress Có Từ Đâu Cái tên Wordpress được đặt bởi Christine Selleck Tremoulet. Christine Selleck ...

Vũ Văn Thanh viết 10:52 ngày 07/09/2018

Một số điều thú vị về tính thừa kế trong Java

Từ lúc bắt đầu học Java đến giờ, mình cứ nghĩ đã hiểu được tính chất thừa kế trong Java là gì và nó hoạt động như thế nào. Nhưng thực sự trong quá trình làm việc, mình mới nhận ra rằng còn rất nhiều thứ đằng sau tính chất thừa kế mà mình chưa biết. Sau đây là một số điều thú vị mình mới phát hiện ...

Bùi Văn Nam viết 18:21 ngày 12/08/2018

Một vài Blade Directives tiện ích trong Laravel có thể bạn ít dùng

Laravel cung cấp cho chúng ta khá nhiều cú pháp rút gọn để chúng ta có thể sử dụng trong các file view một các tiện lợi, linh hoạt để hiển thị giao diện đối với các điều kiện thỏa mãn khác nhau, được gọi là Blade directives . Ở bài viết này mình sẽ đi vào các Blade directives rất hữu dụng mà có ...

Trịnh Tiến Mạnh viết 17:58 ngày 12/08/2018

Một số điều thú vị khi làm việc với Mongodb

Mongodb là một trong những loại cơ sở dữ liệu Nosql phổ biến nhất hiện nay, thuộc kiểu document, mã nguồn mở, data được lưu dưới dạng binary json (BSON). Được viết bằng C++ nên mongodb có khả năng tính toán với tốc độ cao, hỗ trợ dynamic schema, cả vertical scaling và horizontal scaling. Xin liệt ...

Hoàng Hải Đăng viết 17:37 ngày 12/08/2018
0