Php uuid_create

Được phát hành lần đầu tiên vào năm 1995 như một cách để xây dựng các ứng dụng web động, PHP là một ngôn ngữ kịch bản được gõ động với những điểm tương đồng với Perl và C. Mặc dù được coi là ngôn ngữ lập trình có mục đích chung, PHP chủ yếu được sử dụng để xây dựng trang web

PHP cho người mới bắt đầu - Trở thành chuyên gia PHP - Dự án CMS

PHP cho người mới bắt đầu. học mọi thứ bạn cần để trở thành nhà phát triển PHP chuyên nghiệp với các bài tập và dự án thực tế

Tìm hiểu thêm

Cách tạo UUID trong PHP

PHP không có hỗ trợ tích hợp để tạo UUID tuân thủ RFC 4122. Hàm,

apt-get update && apt-get install libffi-dev && docker-php-ext-configure ffi --with-ffi && docker-php-ext-install ffi
3, không phải là sự thay thế đầy đủ để tạo UUID tuân thủ RFC 4122 vì nó có thể không phải lúc nào cũng tạo ra một giá trị duy nhất [đặc biệt nếu máy tính của bạn chạy nhanh] và nó chỉ có thể tạo tối đa 23 ký tự

Tuy nhiên, bên dưới bạn sẽ tìm thấy hai giải pháp khả thi của bên thứ ba để tạo UUID tuân thủ RFC 4122 trong PHP

1. Chức năng tạo UUID tự cuộn của riêng bạn trong PHP

Hàm trợ giúp nhỏ này tạo UUID phiên bản 4 tuân thủ RFC 4122

function guidv4[$data = null] {

// Generate 16 bytes [128 bits] of random data or use the data passed into the function.

$data = $data ?? random_bytes[16];

assert[strlen[$data] == 16];

$data[6] = chr[ord[$data[6]] & 0x0f | 0x40];

$data[8] = chr[ord[$data[8]] & 0x3f | 0x80];

// Output the 36 character UUID.

return vsprintf['%s%s-%s-%s-%s-%s%s%s', str_split[bin2hex[$data], 4]];

ghi chú

  • Hàm này yêu cầu PHP 7 trở lên do sử dụng hàm random_bytes trên dòng #3
  • Nếu bạn đang sử dụng PHP 5 hoặc phiên bản cũ hơn và đã cài đặt tiện ích mở rộng openssl, bạn có thể sử dụng
    apt-get update && apt-get install libffi-dev && docker-php-ext-configure ffi --with-ffi && docker-php-ext-install ffi
    
    4, thay vì
    apt-get update && apt-get install libffi-dev && docker-php-ext-configure ffi --with-ffi && docker-php-ext-install ffi
    
    5 ở dòng #3
  • Tín dụng cho câu trả lời này trên Stackoverflow cho giải pháp này
  • Một ví dụ sử dụng chức năng này sẽ như thế này

2. Sử dụng Thư viện PHP
apt-get update && apt-get install libffi-dev && docker-php-ext-configure ffi --with-ffi && docker-php-ext-install ffi
6

Nếu bạn đang sử dụng Trình soạn thảo để quản lý các phụ thuộc trong dự án PHP của mình, bạn có thể sử dụng thư viện PHP

apt-get update && apt-get install libffi-dev && docker-php-ext-configure ffi --with-ffi && docker-php-ext-install ffi
7 để tạo UUID

Để bắt đầu với thư viện, bạn có thể cài đặt và thêm nó vào dự án của mình như thế này

% composer require ramsey/uuid

Bây giờ bạn có thể sử dụng nó trong dự án PHP của mình. Đây là một ví dụ nhỏ về việc tạo UUID với thư viện này

Một thẻ đã tồn tại với tên chi nhánh được cung cấp. Nhiều lệnh Git chấp nhận cả tên thẻ và tên nhánh, vì vậy việc tạo nhánh này có thể gây ra hành vi không mong muốn. Bạn có chắc chắn muốn tạo nhánh này không?

Được xuất đề từ RFC. PHP RFC. FFI - Foreign Function Interface, PHP FFI đã chính thức được chấp nhận và trở thành một phần mở rộng của PHP từ phiên bản PHP 7. 4

Nội dung chính Hiển thị

  • Giới thiệu
  • Cố gắng sử dụng PHP FFI
  • Tải thư viện có sẵn
  • Tự tạo thư viện
  • Ví dụ với libuid
  • Kết luận

FFI cho phép bạn sử dụng các thư viện chia sẻ của thư viện [các tệp

apt-get update && apt-get install libffi-dev && docker-php-ext-configure ffi --with-ffi && docker-php-ext-install ffi
7 hoặc
apt-get update && apt-get install libffi-dev && docker-php-ext-configure ffi --with-ffi && docker-php-ext-install ffi
8] từ các ngôn ngữ khác nhau như C, Go, Rust,. trực tiếp bằng mã PHP mà không phải viết phần mở rộng PHP bằng ngôn ngữ C

Thư viện chia sẻ thường được viết bằng C. Nhưng nó có thể viết bằng nhiều ngôn ngữ khác mà có khả năng biên dịch như. C ++, rỉ sét, đi,. Trên Linux, thư viện được biên dịch thành các tệp

apt-get update && apt-get install libffi-dev && docker-php-ext-configure ffi --with-ffi && docker-php-ext-install ffi
7. Trên Windows nó là tệp
apt-get update && apt-get install libffi-dev && docker-php-ext-configure ffi --with-ffi && docker-php-ext-install ffi
8

Thông thường các phần mở rộng PHP được viết bằng ngôn ngữ C, chẳng hạn như PHP PDO, GD, Imagick, Bcmath. and the extension must install as a package of the system chứ không thể cài đặt trực tiếp bằng

php -m
1

PHP FFI vẫn đang được phát triển và có tiềm năng ứng dụng cao, một vài ví dụ

  • Prototype nhanh các thư viện chưa có PHP extension chẳng hạn Tensorflow, Redis client, các thư viện liên quan đến ML, thư viện bản quyền,
  • Tích hợp các thư viện dễ dàng hơn mà không cần chuyên gia về ngôn ngữ C
  • Thực hiện các nhiệm vụ yêu cầu tốc độ tải cao bằng C, Rust sau đó tích hợp vào PHP
  • API trực tiếp của công cụ PHP
  • Thư viện đối tượng bất biến cho PHP
  • https. //github. com/gabrielrcouto/awesome-php-ffi

Python trở thành ngôn ngữ phổ biến nhất cho Machine Learning cũng nhờ FFI có khả năng dễ dàng tích hợp với các thư C. https. // nhà phát triển. to/verkkokauppacom/introduction-to-php-ffi-po3

Cố gắng sử dụng PHP FFI

Để sử dụng PHP FFI, cách đơn giản là sử dụng docker PHP 7. 4

docker run --name php74 -it php:7.4 bash

Sau đó chạy lệnh để cài đặt tiện ích mở rộng FFI

apt-get update && apt-get install libffi-dev && docker-php-ext-configure ffi --with-ffi && docker-php-ext-install ffi

Kiểm tra lại xem tiện ích mở rộng FFI đã được tải chưa bằng lệnh

php -m

=> Đầu ra

% composer require ramsey/uuid

0

Theo mặc định FFI được kích hoạt trong các trường hợp sau

  1. Chạy tập lệnh PHP bằng PHP CLI, ví dụ
    php -m
    
    2
  2. Sử dụng tính năng
    php -m
    
    3 của PHP 7. 4 khi chạy ứng dụng web => tham khảo bài biết về tải trước

Tuy nhiên, có thể thiết lập lại thông tin qua giá trị

php -m
4 trong php. ban đầu

% composer require ramsey/uuid

4

Ví dụ

Tải thư viện có sẵn

Ví dụ đơn giản đầu tiên đó là tải thư viện

php -m
5 và chức năng xuất khẩu
php -m
6 để sử dụng trong PHP

% composer require ramsey/uuid

7

Ngoài ra, cách sử dụng

php -m
7 chúng ta có thể sử dụng
php -m
8 để tải trực tiếp tiêu đề tệp
php -m
9

Tạo tiêu đề tệp

% composer require ramsey/uuid

00

apt-get update && apt-get install libffi-dev && docker-php-ext-configure ffi --with-ffi && docker-php-ext-install ffi
2

Định nghĩa

% composer require ramsey/uuid

01 để đặt đường dẫn đến thư viện [đường dẫn tương đối hoặc tuyệt đối hoặc tên thư viện hệ thống]

tải FFI

apt-get update && apt-get install libffi-dev && docker-php-ext-configure ffi --with-ffi && docker-php-ext-install ffi
4

Trông có vẻ sáng tạo hơn vì chúng ta đã tách hàm định nghĩa cần ràng buộc thành 1 tệp riêng biệt đúng theo cú pháp của C

Tự tạo thư viện

Trong ví dụ này, chúng tôi sẽ tạo một thư viện C và sau đó tải vào PHP thông qua FFI

Để tạo 1 thư viện đơn giản, cần có các tệp sau

apt-get update && apt-get install libffi-dev && docker-php-ext-configure ffi --with-ffi && docker-php-ext-install ffi
5

File

% composer require ramsey/uuid

02 để khai báo nguyên mẫu cho hàm C

apt-get update && apt-get install libffi-dev && docker-php-ext-configure ffi --with-ffi && docker-php-ext-install ffi
7

Tệp

% composer require ramsey/uuid

03 để triển khai hàm fibonacci theo nguyên mẫu từ tệp

% composer require ramsey/uuid

02

apt-get update && apt-get install libffi-dev && docker-php-ext-configure ffi --with-ffi && docker-php-ext-install ffi
0

Tiếp theo chúng ta sẽ biên dịch thành thư viện chia sẻ ______ 105 sử dụng

% composer require ramsey/uuid

06

apt-get update && apt-get install libffi-dev && docker-php-ext-configure ffi --with-ffi && docker-php-ext-install ffi
1

Tiếp theo là thử nghiệm với PHP

apt-get update && apt-get install libffi-dev && docker-php-ext-configure ffi --with-ffi && docker-php-ext-install ffi
2

Bạn có thể tham khảo thêm cách biên dịch thư viện chia sẻ tại bài viết https. //nền tảng. sh/blog/2020/php-fun-with-ffi-vừa đủ-c/

Ví dụ với libuid

PHP có một vài thư viện để tạo UUID. Một trong số đó là sử dụng tiện ích mở rộng PECL UUID

You can read your code on GitHub. Tiện ích mở rộng đảm nhiệm vai trò ràng buộc các hàm PHP với

% composer require ramsey/uuid

07. Để nó hoạt động, bạn phải cài đặt

% composer require ramsey/uuid

07 trên hệ thống [phần lớn đã được cài đặt sẵn trên Linux] và PECL

Đây là luồng hoạt động khi chúng ta gọi hàm

% composer require ramsey/uuid

09 trong PHP

apt-get update && apt-get install libffi-dev && docker-php-ext-configure ffi --with-ffi && docker-php-ext-install ffi
3

Tính năng của FFI có thể hiện ở công việc thay lớp "UUID extension" bằng mã PHP trực tiếp

Trong thư viện

% composer require ramsey/uuid

07 có tiêu đề tệp

% composer require ramsey/uuid

41 mô tả các nguyên mẫu chức năng do thư viện cung cấp, ví dụ

apt-get update && apt-get install libffi-dev && docker-php-ext-configure ffi --with-ffi && docker-php-ext-install ffi
4

Chúng ta sẽ tạo tiêu đề tệp để tải FFI bằng cách sao chép tệp

% composer require ramsey/uuid

41 và loại bỏ những chức năng không cần thiết, cũng như thiết lập giá trị

% composer require ramsey/uuid

01

apt-get update && apt-get install libffi-dev && docker-php-ext-configure ffi --with-ffi && docker-php-ext-install ffi
5

Đến đây, tương tự như các ví dụ trên, ta có thể gọi các hàm

% composer require ramsey/uuid

44,

% composer require ramsey/uuid

45,

% composer require ramsey/uuid

46,

% composer require ramsey/uuid

47 trong PHP. Có một chút khác biệt đó là các hàm này không trả về kết quả mà cần 1 biến đầu ra [có kiểu là

% composer require ramsey/uuid

48] là tham số cho hàm

apt-get update && apt-get install libffi-dev && docker-php-ext-configure ffi --with-ffi && docker-php-ext-install ffi
6

Ở đây chúng ta sử dụng hàm

% composer require ramsey/uuid

49 để khởi động biến thuộc kiểu

% composer require ramsey/uuid

48 trong C

Tham khảo thêm tại. https. //github. com/jolicode/ffi-uuid

Ngoài ra mình cũng nghịch với lib của VLC để thử chơi mp3 bằng PHP mà chưa được, bạn nào có ý tưởng tưởng tượng thì chia sẻ nhé

=> https. //www. reddit. com/r/PHP/bình luận/gdgvyg/poc_php_ffi_and_libvlc/

Kết luận

Chúng ta đã thực hiện ràng buộc các thư viện bên ngoài khá dễ dàng với PHP FFI

Cảm ơn các bạn đã đọc và hy vọng bài viết có thể giúp các bạn có cái nhìn ban đầu về FFI và nghĩ ra được nhiều ứng dụng hơn với FFI

Chủ Đề