Hướng dẫn dùng implent trong PHP

  • Định nghĩa.
  • Cú pháp.
    • Cú pháp:
    • Trong đó.
    • Giá trị trả về.
  • Ghi chú.
  • Changelog.
  • Ví dụ.
    • Ví dụ # 1.
  • Hàm liên quan.
  • Thông tin thêm.

Định nghĩa.

Hàm tempnam() sẽ tạo file với tên file là duy nhất trong nằm thư mục truyền vào. Nếu thư mục không tồn tại, hàm tempnam() có thể tạo tệp tin vào thư mục tạm của hệ thống.

Nội dung chính

  • Định nghĩa.
  • Trong đó.
  • Giá trị trả về.
  • Ví dụ # 1.
  • Hàm liên quan.
  • Thông tin thêm.
  • 1, Interface là gì? và tính chất.
  • Interface là gì?
  • Tính chất của interface.
  • 2, Các ví dụ.
  • 3, Lời kết.
  • 1. Interface là gì ?
  • 2.Tính kế thừa interface trong PHP
  • 3. Lời kết

Cú pháp.

Cú pháp:

tempnam ( string $dir , string $prefix ) : string

Trong đó.

  • $dir là thư mục sẽ chứa file.
  • $prefix là tên file, hàm sẽ chỉ dụng 3 kí tự đầu tiên của $prefix để làm tiền tố của tên file được tạo.

Giá trị trả về.

  • Hàm sẽ trả về đường dẫn tới file vừa tạo nếu tạo file thành công. ngược lại hàm trả về False.

Ghi chú.

  • Lưu ý: Chỉ 63 ký tự đầu tiên của tiền tố được sử dụng. Windows thậm chí chỉ sử dụng ba ký tự đầu tiên của tiền tố.
  • Lưu ý: Nếu PHP không thể tạo một tệp trong tham số dir được chỉ định, nó sẽ trở về mặc định của hệ thống. Trên NTFS, điều này cũng xảy ra nếu dir được chỉ định chứa nhiều hơn 65534 tệp.

Changelog.

  • 5.3.0 Chức năng này hiện khả dụng trên nền tảng Windows (Vista, Server 2008 trở lên).

Ví dụ.

Ví dụ # 1.

code.

Hàm liên quan.

  • tmpfile() – Tạo một tệp tạm thời
  • sys_get_temp_dir() – Trả về đường dẫn thư mục được sử dụng cho các tệp tạm thời
  • unlink() – Xoá file

Thông tin thêm.

  • Hãy coi chừng việc sử dụng $ dir trống như một “trick” để tạo các tệp tạm thời trong thư mục tạm thời của hệ thống.
     Nếu một hạn chế open_basedir có hiệu lực, thủ thuật sẽ không hoạt
    động. Bạn sẽ nhận được một thông báo cảnh báo như Cảnh báo: tempnam () [function.tempnam]: hạn chế open_basedir có hiệu lực. Tệp () không nằm trong (các) đường dẫn được phép: (/var/www/vhosts/example.com/httpdocs:/tmp). 
  • Xin lưu ý rằng hàm này có thể đưa ra thông báo trong PHP 7.1.0 trở lên. Đây là một bản sửa lỗi: https://bugs.php.net/bug.php?id=69489 Bạn có thể đặt address operator (@) để tắt thông báo:
    if ($tmp = @tempnam() !== false) {
      }
    ?>
    Hoặc bạn có thể thử đặt cài đặt “upload_tmp_dir” trong php.ini thành đường dẫn thư mục tạm thời trong hệ thống của bạn. Không chắc chắn, nếu cái cuối cùng ngăn các thông báo.
  • Lưu ý rằng tempnam trả về đường dẫn đầy đủ đến tệp tạm thời, không chỉ tên tệp.
  • Nếu bạn truy cập trang người dùng linux cho hàm C tempnam (3), bạn sẽ thấy ở cuối “Không bao giờ sử dụng hàm này. Thay vào đó, hãy sử dụng mkstemp (3)”. Nhưng hàm tempnam () của php không thực sự sử dụng tmpnam (3), vì vậy không có vấn đề gì (trong Linux, nó sẽ sử dụng mkstemp (3) nếu có).

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 tempnam() 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

Tiếp tục với series học lập trình PHP hướng đối tượng, bài này chúng ta sẽ tìm hiểu về interface template trong hướng đối tượng.

Nội dung chính

  • 1, Interface là gì? và tính chất.
  • Interface là gì?
  • Tính chất của interface.
  • 2, Các ví dụ.
  • 3, Lời kết.
  • 1. Interface là gì ?
  • 2.Tính kế thừa interface trong PHP
  • 3. Lời kết

1, Interface là gì? và tính chất.

Interface là gì?

-Interface trong hướng đối tượng là một khuôn mẫu, giúp cho chúng ta tạo ra bộ khung cho một hoặc nhiều đối tượng và nhìn vào interface thì chúng ta hoàn toàn có thể xác định được các phương thức và các thuộc tính cố định (hay còn gọi là hằng) sẽ có trong đối tượng implement nó.

-Để khai báo interface trong PHP chúng ta dùng cú pháp:

interface InterfaceName
{
    //code
}

Trong đó: InterfaceName là tên của interface các bạn muốn đặt.

VD: Mình sẽ tạo ra interface DongVat.

interface DongVat
{
    //code
}

Tính chất của interface.

-Sau đây mình sẽ liệt kê ra các tính chất của interface:

  • Interface không phải là một đối tượng.
  • Trong interface chúng ta chỉ được khai báo phương thức chứ không được định nghĩa chúng.
  • Trong interface chúng ta có thể khai báo được hằng nhưng không thể khai báo biến.
  • Một interface không thể khởi tạo được (vì nó không phải là một đối tượng).
  • Các lớp implement interface thì phải khai báo và định nghĩa lại các phương thức có trong interface đó.
  • Một class có thể implement nhiều interface.
  • Các interface có thể kế thừa lẫn nhau.

2, Các ví dụ.

VD1: Chỉ được khai báo phương thức chứ không được định nghĩa chúng trong interface.

interface DongVat
{
    //đúng vì chúng ta chỉ khai báo phương thức trong interface
    public function setName();

    //Sai vì chúng ta không được định nghĩa phương thức trong interface
    public function getName()
    {
        //
    }
}

VD2: Trong interface chúng ta chỉ được khai báo hằng không thể khai báo biến.

interface DongVat
{
    //đúng vì trong interface có thể khai báo hằng
    const CONNGUOI = False;

    //Sai vì trong interface không thể khai báo biến
    public $name;

}

VD3: Một interface không thể khởi tạo được.

interface DongVat
{
    //
}

//sai vì interface không thể khởi tạo được
$dongvat = new DongVat();

VD4: Các lớp implement lại interface thì phải khai báo và định nghĩa lại các phương thức có trong interface.

interface DongVat
{
    public function getName();
}

//Class này đúng vì đã khai báo và định nghĩa lại phương thức getName
//trong interface
class ConTrau implements DongVat
{
    private $name;

    public function getName()
    {
        return $this->name;
    }
}

//Class này sai vì chưa khai báo và định nghĩa lại phương thức getName
//trong interface
class ConBo implements DongVat
{
    private $name;

    public function setName($name)
    {
        $this->name = $name;
    }
}

VD5: Một class có thể implement  nhiều interface.

interface DongVat
{
    public function getName();
}

interface ConTrau
{
    public function checkSung();
}

class ConNghe implements DongVat, ConTrau
{
    private $name;

    const SUNG = false;

    public function getName()
    {
        return $this->name;
    }

    public function checkSung()
    {
        return self::SUNG;
    }
}

VD6: interface có thể kế thừa lẫn nhau.

interface DongVat
{
    public function getName();
}

interface ConTrau extends Dongvat
{
    public function checkSung();
}

class ConNghe implements ConTrau
{
    private $name;
    const SUNG = false;

    public function getName()
    {
        return $this->name;
    }

    public function checkSung()
    {
        return self::SUNG;
    }
}

3, Lời kết.

-Như vậy mình đã giới thiệu xong đến mọi người về interface trong hướng đối tượng nói chung và PHP nói riêng rồi, dựa vào bài này và bài trước đó (lớp trừu tượng abstract) các bạn hãy tự đưa ra cho mình các điểm khác nhau giữa interfaceabstract nhé! Bài tiếp theo chúng ta sẽ tìm hiểu về staticfinal trong hướng đối tượng.

Đăng ký nhận tin.

Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!

Bài Viết Mới

1. Interface là gì ?

Interface là một Template (khuôn mẫu), nó không phải là một lớp đối tượng mà chỉ là một bề nhìn bên ngoài mà nhìn vào đó ta có thể biết được tất cả các hàm của đối tượng implement nó.

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Để khai báo một Interface ta dùng từ khóa interface để thay cho từ khóa class. Tất cả các hàm trong interface đểu ở dạng khai báo và không được định nghĩa (giống lớp abstract). Nếu một đối tượng implement một interface thì nó phải khai báo và định nghĩa tất cả các hàm trong Interface.

Thoạt nhìn qua các bạn thấy Interface rất giống với Abstract trong php đúng không nào? Câu trả lời là bản chất bên trong hoàn toàn khác nhau. Interface không phải là một lớp cụ thể mà là một khuôn mẫu để cho một đối tượng implement nó, và đương nhiên là ta không thể tạo một biến Interface. Ngược lại lớp Abstract là một lớp cụ thể, có đầy đủ các tính chất của một đối tượng, có thể gọi, định nghĩa các hàm trong nó. Đối với hằng số ở lớp implement không được định nghĩa lại.

Ví dụ: Định nghĩa hằng số bị sai

interface A
{
    const ConstA = 'Freetuts.net';
}
 
// Lớp này sai vì không thể định nghĩa lại hằng
class B implements A
{
    const ConstA = 'Other Name';
}
 
// Lớp này đúng
class D implements A
{
}

Ví dụ: Định nghĩa hàm trong template bị sai

// Khai báo một Interface
interface DogTemplate
{
    // Hàm này đúng vì ta chỉ khai báo mà không có định nghĩa
    public function Run();
 
    // Hàm này sai vì ta đã định nghĩa cho nó
    public function Eat(){
 
    }
}

Ví dụ: Định nghĩa mức truy cập bị sai

// Template
interface DogTemplate
{
    public function Run();
 
    public function Eat();
}
 
// Lớp Dog
class Dog implements DogTemplate
{
    // Hàm này sai vì cấp độ truy cập
    // của hàm run bên template là public
    // mà trong hàm này ta lại khai báo là private
    private function Run(){
 
    }
 
    // Hàm này đúng
    public function Eat(){
 
    }
}

Ví dụ: Bị thiếu hàm

// Template
interface DogTemplate
{
    public function Run();
 
    public function Eat();
}
 
// Lớp Dog
// Sai vì thiếu hàm Run
class Dog implements DogTemplate
{
    public function Eat(){
 
    }
}

2.Tính kế thừa interface trong PHP

Interface trong php tuy không phải là một lớp chính hiệu nhưng nó cũng có một tính chất đó là tính kế thừa, nghĩa là một Interface A có thể kế thừa một Interface B thì lúc này đối tượng nào implement lớp A thì nó phải định nghĩa tất cả các hàm mà cả hai lớp A và B đã khai báo.

Ví dụ:

interface A {
    public function funcA();
}
 
interface B extends A
{
    public function funcB();
}
 
// Lớp này đúng vì nó khai báo đầy
// đủ các hàm trong A và B
class C implements B
{
    public function funcA()
    {
 
    }
 
    public function funcB()
    {
 
    }
}
 
// Lớp này sai vì nó khai báo mỗi hàm funcA
class D implements B
{
    public function funcA()
    {
 
    }
}

3. Lời kết

Trong bài này các bạn phải phân biệt được hai khái niệm là lớp trừu tượng abstract interface trong php. Những ví dụ mình đưa ra chỉ là minh họa không có trung thực tế nhưng về cú pháp thì hoàn toàn đúng. Kiến thức mình cũng có hạn có gì sai sót mong các bạn bỏ qua.

Bài viết này được đăng tại [free tuts .net]