Hướng dẫn how can we call a method without creating object in php? - Làm thế nào chúng ta có thể gọi một phương thức mà không cần tạo đối tượng trong php?

Tôi đã nhìn và cố gắng nhưng tôi không thể tìm thấy câu trả lời.

Trong PHP, liệu có thể gọi hàm thành viên của lớp (khi lớp đó yêu cầu một hàm tạo để nhận tham số) mà không cần khởi tạo nó như một đối tượng?

Một ví dụ mã (đưa ra lỗi):

end=$value;
    }

    public function alert($value) {
        echo $value." ".$this->end;
    }
}

//this works:
$example=new Test("world");
$example->alert("hello");

//this does not work:
echo Test("world")::alert("hello");

?>

hỏi ngày 23 tháng 6 năm 2010 lúc 4:06Jun 23, 2010 at 4:06

Hướng dẫn how can we call a method without creating object in php? - Làm thế nào chúng ta có thể gọi một phương thức mà không cần tạo đối tượng trong php?

2

Thật không may, PHP không có hỗ trợ để làm điều này, nhưng bạn là một anh chàng sáng tạo và nhìn: D

Bạn có thể sử dụng một "nhà máy", mẫu:

__aaa = $aaa;
   }

   public static function factory($aaa)
   {
      return new Foo($aaa);
   }

   public function doX()
   {
      return $this->__aaa * 2;
   }
}

Foo::factory(10)->doX();   // outputs 20

Đã trả lời ngày 23 tháng 6 năm 2010 lúc 5:06Jun 23, 2010 at 5:06

2

Chỉ cần làm điều này (trong PHP> = 5.4):

$t = (new Test("Hello"))->foo("world");

Đã trả lời ngày 19 tháng 3 năm 2014 lúc 3:34Mar 19, 2014 at 3:34

Andrew Uandrew uAndrew U

7297 Huy hiệu bạc10 Huy hiệu đồng7 silver badges10 bronze badges

0

Tôi cũng vậy, đang tìm kiếm một lớp lót để thực hiện điều này như là một phần của một biểu thức duy nhất để chuyển đổi ngày từ định dạng này sang định dạng khác. Tôi thích làm điều này trong một dòng mã duy nhất vì nó là một hoạt động logic duy nhất. Vì vậy, đây là một chút khó hiểu, nhưng nó cho phép bạn khởi tạo và sử dụng một đối tượng ngày trong một dòng duy nhất:

$newDateString = ($d = new DateTime('2011-08-30') ? $d->format('F d, Y') : '');

Một cách khác để một dòng chuyển đổi chuỗi ngày từ định dạng này sang định dạng khác là sử dụng hàm trợ giúp để quản lý các phần OO của mã:

function convertDate($oldDateString,$newDateFormatString) {
    $d = new DateTime($oldDateString);
    return $d->format($newDateFormatString);
}

$myNewDate = convertDate($myOldDate,'F d, Y');

Tôi nghĩ rằng cách tiếp cận định hướng đối tượng là tuyệt vời và cần thiết, nhưng đôi khi nó có thể tẻ nhạt, đòi hỏi quá nhiều bước để thực hiện các hoạt động đơn giản.

Đã trả lời ngày 1 tháng 9 năm 2011 lúc 15:40Sep 1, 2011 at 15:40

Bạn không thể gọi một phương thức cấp độ thể hiện mà không có một ví dụ. Cú pháp của bạn:

echo Test("world")::alert("hello");

Không có nhiều ý nghĩa. Hoặc là bạn đang tạo một thể hiện nội tuyến và loại bỏ nó ngay lập tức hoặc phương thức

__aaa = $aaa;
   }

   public static function factory($aaa)
   {
      return new Foo($aaa);
   }

   public function doX()
   {
      return $this->__aaa * 2;
   }
}

Foo::factory(10)->doX();   // outputs 20
1 không có phiên bản
__aaa = $aaa;
   }

   public static function factory($aaa)
   {
      return new Foo($aaa);
   }

   public function doX()
   {
      return $this->__aaa * 2;
   }
}

Foo::factory(10)->doX();   // outputs 20
2 ngầm.

Assuming:

class Test {
  public function __construct($message) {
    $this->message = $message;
  }

  public function foo($message) {
    echo "$this->message $message";
  }
}

bạn có thể làm:

$t = new Test("Hello");
$t->foo("world");

Nhưng cú pháp PHP không cho phép:

new Test("Hello")->foo("world");

mà nếu không sẽ là tương đương. Có một vài ví dụ về điều này trong PHP (ví dụ: sử dụng lập chỉ mục mảng khi trả về hàm). Nó là như vậy.

Đã trả lời ngày 23 tháng 6 năm 2010 lúc 4:14Jun 23, 2010 at 4:14

cletuscletuscletus

Huy hiệu vàng 605K163163 gold badges903 silver badges940 bronze badges

1

Đối với điều này, bạn có thể làm một

https://www.php.net/manual/en/reflectionclass.newinstancewithoutconstructor.php

Phản ánh lớp của bạn và kích hoạt thể hiện mới mà không có hàm tạo.

Đây là mã mẫu:

end=$value;
    }

    public function alert($value) {
        echo $value." ".$this->end;
    }

    public function end($value) {

        $this->end = $value;        

        return $this; // return Test object so that you can chain to other function method.
    }
}

// Solution #1:
// reflect your class.
$reflector = new \ReflectionClass('Test');

// Then create a new instance without Constructor.
// This will ignore the constructor BUT it will create a new instance of class Test.
$say = $reflector->newInstanceWithoutConstructor();

// use end method that will return the Test object, then you can chain the alert()
$say->end('World!')->alert("Hello"); // output: Hello World!

?>

Đã trả lời ngày 1 tháng 11 năm 2021 lúc 10:20Nov 1, 2021 at 10:20

__aaa = $aaa;
   }

   public static function factory($aaa)
   {
      return new Foo($aaa);
   }

   public function doX()
   {
      return $this->__aaa * 2;
   }
}

Foo::factory(10)->doX();   // outputs 20
0

Đã trả lời ngày 23 tháng 6 năm 2021 lúc 19:24Jun 23, 2021 at 19:24

Hướng dẫn how can we call a method without creating object in php? - Làm thế nào chúng ta có thể gọi một phương thức mà không cần tạo đối tượng trong php?

Làm thế nào để bạn truy cập một phương thức mà không cần tạo một đối tượng?

Chúng ta có thể gọi một phương thức tĩnh bằng cách sử dụng ClassName.methodName. Ví dụ tốt nhất về phương thức tĩnh là phương thức chính (). Nó được gọi mà không tạo ra đối tượng.call a static method by using the ClassName. methodName. The best example of the static method is the main() method. It is called without creating the object.

Làm thế nào để bạn gọi một phương thức trong PHP?

Để gọi một phương thức trên một đối tượng, bạn chỉ cần gọi tên đối tượng theo sau là "->" và sau đó gọi phương thức. Vì đó là một tuyên bố, bạn đóng nó bằng một dấu chấm phẩy. Khi bạn đang xử lý các đối tượng trong PHP, "->" hầu như luôn được sử dụng để truy cập đối tượng đó, cho dù đó là thuộc tính hay gọi phương thức.call the object name followed by "->" and then call the method. Since it's a statement, you close it with a semicolon. When you are dealing with objects in PHP, the "->" is almost always used to access that object, whether it's a property or to call a method.

Bạn có thể gọi phương thức lớp mà không cần tạo một thể hiện không?

Phương pháp tĩnh được liên kết với lớp trong đó chúng cư trú, chúng được gọi mà không tạo ra một thể hiện của lớp i.e ClassName.Tên phương thức (Args).Chúng được thiết kế với mục đích được chia sẻ giữa tất cả các đối tượng được tạo từ cùng một lớp. i.e ClassName. methodName(args). They are designed with the aim to be shared among all objects created from the same class.

Làm thế nào để bạn gọi một hàm lớp mà không có đối tượng?

Chỉ các hàm lớp tĩnh mới có thể được gọi mà không cần một đối tượng bằng cách sử dụng Cú pháp của lớp :: function ().Vì vậy, bạn nên thêm tĩnh làm từ khóa vào định nghĩa về các chức năng của bạn trong lớp CAT.using the Class::function() syntax. So, you should add static as a keyword to the definition of your functions inside the Cat class.