logo

  • Hỏi Đáp
  • Kiến Thức
  • Sức Khỏe
  • Tử Vi
  • Công Nghệ
No Result
View All Result
logo
No Result
View All Result
Trang chủ phương thức tĩnh (static method) trong php

PHƯƠNG THỨC TĨNH (STATIC METHOD) TRONG PHP

by Admin _ June 22, 2022

Xin chào những bạn, trong quá trình mới học PHP, có lẽ rằng nhiều các bạn cũng gặp mặt khó khăn trong vấn đề phân biệt $this và self vào PHP cùng mình cũng không phải là nước ngoài lệ. Vậy cho nên hãy cùng tìm hiểu ở bài bác này nhé.

Bạn đang xem: Phương thức tĩnh (static method) trong php

$this vs self trong đối tượng

Các chúng ta theo dõi lấy ví dụ như sau đây của bản thân mình (làm thuộc thì càng giỏi nha hề hề).

Tạo một class DoAn cùng class Pho kế thừa và override phương thức classType() của class DoAn.

Xem thêm: Hướng Dẫn Chi Tiết Cách Tải Và Sử Dụng Phần Mềm Lightworks Đơn Giản

class DoAn public function classType() echo "Đây là DoAn"; public function echoClass() self::classType(); class Pho extends DoAn public function classType() echo "Đây là Pho"; $pho = new Pho(); $pho->echoClass(); // công dụng là Đây là DoAnTrong đoạn code trên, vào hàm echoClass bản thân sử dụng self::classType() nên công dụng sẽ trả về “Đây là DoAn” của lớp DoAn bởi vì phương thức echoClass() được khai báo làm việc class DoAn, cùng khi mình cụ self bằng $this thì:

class DoAn public function classType() echo "Đây là DoAn"; public function echoClass() $this->classType(); class Pho extends DoAn public function classType() echo "Đây là Pho"; $pho = new Pho();$pho->echoClass(); // công dụng là Đây là PhoKết quả hôm nay sẽ là “Đây là Pho” vị $this tham chiếu đến những thành viên của đối tượng người tiêu dùng hiện tại Pho chứ chưa hẳn là lớp DoAn. Tại phía trên thì bằng hữu mình tất cả những kết luận là:

*self đang tham chiếu mang đến class khai báo nó, $this đã tham chiếu đến đối tượng người dùng hiện tại. *self có thể gọi những phương thức không phải là tĩnh (non-static).

$this cùng self trong cách làm tĩnh

Mình đang tới ví dụ tiếp theo sau nha

class DoAn public static $type; public static function echoClass() $this->type = "Do An"; $doan = new DoAn();$doan->echoClass(); // lỗi Fatal error: Uncaught Error: Using $this when not in object context in...Xuất hiện nay lỗi này khi họ sử dụng $this trong static function. Static function rất có thể gọi thẳng từ class mà không phải tạo đối tượng:

DoAn::echoClass();Nếu dùng theo cách này thì việc dùng $this là vô nghĩa, bởi $this dùng làm tham chiếu đến đối tượng người tiêu dùng hiện trên mà bọn họ lại không thao tác làm việc với đối tượng người tiêu dùng nào cơ hội này. Bây giờ mình sẽ nạm $this bằng self:

class DoAn public static $type; public static function echoClass() echo self::$type = "Do An"; $doan = new DoAn();$doan->echoClass(); // vày AnDoAn::echoClass(); // vì AnKết trái của đoạn code cơ lại chạy được như bình thường khi cách tiến hành echoClass() được hotline bằng cả hai cách. Nếu như mình vắt static $type lịch sự $type thì đoạn code vẫn lỗi Fatal error: Access khổng lồ undeclared static property.. Vì là những thành phần non-static ko được truy vấn vào trong một static function. Chúng ta lại có những tóm lại tiếp theo là:

*$thís chẳng thể sử dụng trong số phương thức tĩnh.

$this với self khi truy vấn phương thức tĩnh với thuộc tính tĩnh

Đầu tiên bọn họ cùng xem xem liệu $this cùng self hoàn toàn có thể gọi những phương thức tĩnh hay là không nha. Mình gồm 2 lấy ví dụ như sau, trước tiên sử dụng self:

class DoAn public static function echoClass() echo "Do An"; public function useSelf() self::echoClass(); $doan = new DoAn();$doan->useSelf(); // công dụng là do Anvà

class DoAn public static function echoClass() echo "Do An"; public function useSelf() $this->echoClass(); $doan = new DoAn();$doan->useSelf(); // hiệu quả là bởi AnKết quả của tất cả ví dụ trên số đông như nhau, vậy nên:

Có thể hotline static function bởi $this

Sau lúc qua các phương thức static, mình đã thử với thuộc tính static thông qua ví dụ, thứ nhất là sử dụng $this:

class DoAn public static $type = "Do An"; public function setType($type) $this->type = $type; public function echoType() echo $this->type; $doan = new DoAn();$doan->echoType(); // lỗi Notice: Undefined property: DoAn::$typeMình bao gồm khai báo $type vào class, vậy lý do lại báo lỗi thuộc tính ko được có mang nhỉ ??

*
*
??. Thực chất $type đó chưa hẳn là $type ở dòng thứ nhất mà PHP sẽ tự động hóa tạo ra ở trong tính non-static có tên là $type với $this không thể gọi được các thuộc tính tĩnh, khi thay $this bởi self:

class DoAn public static $type = "Do An"; public function setType($type) self::$type = $type; public function echoType() echo self::$type; $doan = new DoAn();$doan->echoType(); // tác dụng là bởi Anthì code sẽ chạy bình thường. Từ đây ta bao gồm tiếp là:

Không thể cần sử dụng $this để truy cập cũng như biến hóa giá trị nằm trong tính static mà bắt buộc phải dùng self

Qua gần như ví dụ trên, bản thân tóm tắt lại như sau:

$thisself
Tham chiếu đến các thành phần của đối tượng người tiêu dùng hiện tạiTham chiếu đến các thành phần của class hiện nay tại
Không dùng được sử dụng trong static functionCó dùng được bên trong static function
Không thể truy vấn cũng như chuyển đổi giá trị của ở trong tính staticCó thể truy cập cũng như chuyển đổi giá trị của thuộc tính static
Đều hoàn toàn có thể gọi static functionĐều rất có thể gọi static function
 Làm mất tính đa hình
Share Tweet Linkedin Pinterest
Previous Post

Image upload using php and mysql database

Next Post

Php header location response as empty

CÙNG CHUYÊN MỤC

form register php

Form register php

09/04/2021
fantastic blog (cms) in php with source code

Fantastic blog (cms) in php with source code

28/04/2021
validate form php javascript

Validate form php javascript

28/04/2021
http diendanlequydon com viewtopic php style 6

Http diendanlequydon com viewtopic php style 6

28/04/2021
framgia tuyển dụng php

Framgia tuyển dụng php

24/06/2022
giỏ hàng jquery php

Giỏ hàng jquery php

24/06/2022
online php formatter

Online php formatter

24/06/2022
thực tập php tại hồ chí minh

Thực tập php tại hồ chí minh

24/06/2022

Newsletter

The most important automotive news and events of the day

We won't spam you. Pinky swear.

Chuyên Mục

  • Hỏi Đáp
  • Kiến Thức
  • Sức Khỏe
  • Tử Vi
  • Công Nghệ

News Post

  • File in php

About

Chúng tôi tạo ra trang web nhằm mục đích mang lại kiến thức bổ ích cho cộng đồng, các bài viết được sưu tầm từ nhiều nguồn trên internet giúp mang lại kiến thức khách quan dành cho bạn

©2022 darkedeneurope.com - Website WordPress vì mục đích cộng đồng

Liên Hệ - Giới Thiệu - Nội Quy - Bảo Mật

No Result
View All Result
  • Trang chủ
  • Chuyên mục
    • Hỏi Đáp
    • Kiến Thức
    • Sức Khỏe
    • Tử Vi
    • Công Nghệ
  • Lưu trữ
  • Liên hệ

© 2022 darkedeneurope.com - Website WordPress vì mục đích cộng đồng.