• About

Viet PHP

PHP = ['newbie' => 'cơ bản', 'coder' => 'nâng cao', 'professional'=>'chuyên sâu']

  • PHP
    • OOP
    • Basic
  • WordPress
  • Bài tập PHP
  • PHP 7
Home PHP Cách truy cập biến (thuộc tính) và hàm (phương thức) từ ngoài class, dùng -> và ::

Cách truy cập biến (thuộc tính) và hàm (phương thức) từ ngoài class, dùng -> và ::

Posted on April 4, 2018 Written by admin 1 Comment

Tạm thời chưa xét tới các thuộc tính và phương thức tĩnh (với từ khóa static), ta biết rằng có 2 cách để truy xuất class sau khi khởi tạo đối tượng (dùng new class) hoặc truy cập trực tiếp dùng ::.

Xét ví dụ sau:

class Viet{ //Khởi tạo class tên Viet, chú ý tên class là case-sensitive nên 
 //nếu đã có class vieT thì sẽ bị coi là trùng.

   // 3 thuộc tính của class
    private $name;
    public $a = "Thuộc tính a, xin chào ";
    private $b = "Thuộc tính b, hello ";

   //hàm gán tên
    function set_name($ten){

        $this->name = $this->b.$ten;
    }

    //hàm trả lại tên
    function get_name(){

        return $this->name;
    }

    
    function minhhoa1(){

        return "đây là hàm minhoa1()"; // hàm này không gọi biến có trong  class
    }

    function minhhoa2(){

        return $this->a."đây là hàm minhoa2()"; //hàm truyền biến vào
    }

}


$object = new Viet; // Khởi tạo một object mới của class

$object->set_name("Vượng Nguyễn"); // gán tên theo hàm set_name

echo $object->get_name()."<br>"; // xuất tên theo hàm get_name()

echo $object->minhhoa1()."<br>";;//kết quả xuất ra: Xin chào, đây là minhoa1() 

echo $object->minhhoa2()."<br>";;//kết quả xuất ra: Xin chào, đây là minhoa1()

echo Viet::minhhoa1()."<br>"; //kết quả xuất ra: Xin chào, đây là hàm minhoa1()

echo $object->a;

echo Viet::$a; //Fatal error: Uncaught Error: Access to undeclared static property: Viet::$a

// từ code dưới trở xuống bị lỗi.

echo Viet::minhhoa2()."<br>"; //Fatal error: Uncaught Error: Using $this when not in object context in

Viet::set_name("Việt PHP"); //Fatal error: Uncaught Error: Using $this when not in object context 

echo Viet::get_name();

Kết luận:

  1. Cách khởi tạo object thông thường, dùng new class là chuẩn nhất. Cách truy xuất tới thuộc tính và phương thức của class dùng -> là chuẩn, nếu ở đây không có thuộc tính và phương thức tĩnh.
  2. Hàm echo Viet::minhhoa1() có thể truy xuất tới phương thức không chứa thuộc tính của class trong bản thân hàm (dùng từ khóa $this), nhưng lại không thể truy xuất trong trường hợp Viet::minhhoa2().
  3. Không thể dùng :: truy xuất tới thuộc tính trong class, nó chỉ được dùng cho thuộc tính tĩnh.

Filed Under: OOP, PHP

Comments

  1. Author says

    April 5, 2018 at 4:59 am

    Được một đại ca trên daynhauhoc bổ túc, cách dùng :: truy xuất tới non-static elements sắp trở thành quá đát rồi. Đại ca ấy dùng ví dụ sau:

    class ABC
    {
    public function xyz()
    {
    echo “Oh my girl!”;
    }
    }

    error_reporting(E_ALL);
    ABC::xyz();
    print_r(error_get_last());

    Demo tới: https://3v4l.org/7H4pj

    Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • How to pass a variable to the callback function provided by Laravel Collection
  • Cài Sodium trên PHP 7.2 Centos
  • Dependency Injection và Container
  • Hàm array_map() và array_walk()
  • Dependency Injection

Recent Comments

  • admin on Dependency Injection
  • Vượng on Dependency Injection
  • vượng on Dependency Injection
  • vượng on Dependency Injection
  • vượng on Dependency Injection

Archives

  • July 2018
  • June 2018
  • May 2018
  • April 2018

Categories

  • Bài tập PHP
  • Basic
  • Laravel
  • OOP
  • OOP
  • PHP
  • String
  • Uncategorized
  • WordPress

Meta

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org

Copyright © 2021 · Focus Pro on Genesis Framework · WordPress · Log in