HackLang
Hack là ngôn ngữ lập trình cho HipHop Virtual Machine (HHVM), được tạo bởi Facebook, nó có thể tương thích hoàn toàn với PHP. Hack là ngôn ngữ mã nguồn mở, được cấp phép theo giấy phép BSD License . Hack cho phép các lập trình viên sử dụng kiểu tĩnh (static type) và kiểu động của PHP (dynamic ...
Hack là ngôn ngữ lập trình cho HipHop Virtual Machine (HHVM), được tạo bởi Facebook, nó có thể tương thích hoàn toàn với PHP.
Hack là ngôn ngữ mã nguồn mở, được cấp phép theo giấy phép BSD License. Hack cho phép các lập trình viên sử dụng kiểu tĩnh (static type) và kiểu động của PHP (dynamic type). Việc này sẽ rất có lợi trong quá trình debug và test các ứng dụng lớn. Và nếu bạn là một lập trình viên dùng ngôn ngữ OOP truyền thống (như C#, Java), thì Hack sẽ khiến bạn có cảm giác như đang ở nhà.
Hack cho phép chúng ta định nghĩa kiểu của dữ liệu trong các trường hợp như: tham số truyền vào của function, kiểu dữ liệu trả về của function (giống với ActionScript) và các thuộc tính của class, tuy nhiên, các biến local lại không thể khai báo kiểu của biến.
<?hh function negate(bool $x): bool { return !$x; }
Cấu trúc cơ bản của một file Hack tương tự như PHP nhưng có 1 vài thay đổi nhỏ như Hack thì bắt đầu với <?hh, còn PHP thì là <?php.
<?hh echo 'Hello world';
Và một điều đặc biệt không giống với PHP mà bạn cần phải lưu ý, Hack không cho phép kết hợp HTML trong file như đoạn code PHP dưới đây:
<html lang="vi-VN"> <head> <title>PHP Test</title> </head> <body> <?php echo 'Hello world'; ?> </body> </html>
Thay vào đó, bạn có thể sử dụng XHP (hay một template engine nào đó).
Để dễ dàng hơn trong việc tìm hiểu nó, chúng ta sẽ thử chuyển đổi một source PHP nào đó sang Hack nhé. Mình xin phép sử dụng bộ source Bias Random của ThắngTD. Let's go!
Đầu tiên, chúng ta sẽ tạo 1 file với tên BiasRandom.hh. Mở file đó ra với editor bất kỳ (Notepad++, SublimeText, ...) và bắt đầu với cấu trúc cơ bản của Hack:
<?hh // strict
Tiếp theo, chúng ta tạo namespace và class như bình thường trong PHP
namespace wataridoriBiasRandom; class BiasRandom { }
Vẫn chưa có gì khác biệt ngoài kiểu mở đầu file. OK, giờ mới bắt đầu, chúng ta khai báo property $data cho class BiasRandom. Property này là một array (key và value), với key là số nguyên (int) hoặc chuỗi (string) và giá trị là số, nên ta sẽ khai báo như sau:
public array<mixed, int> $data = [];
Khác rồi đúng không ạ