PHP:遍历所有对象方法(调用对象中的所有方法)
在PHP中,是否有任何方法可以通过编程方式调用对象的所有方法 我有一个包含HTML片段的方法的对象:PHP:遍历所有对象方法(调用对象中的所有方法),php,Php,在PHP中,是否有任何方法可以通过编程方式调用对象的所有方法 我有一个包含HTML片段的方法的对象: class Example { public function introduction(){ ?> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliq
class Example {
public function introduction(){
?>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<?php
}
public function step_one(){
?>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<?php
}
Etc...
}
类示例{
公共职能介绍(){
?>
知识是一种美德,是一种美德,是一种美德,是一种美德
知识是一种美德,是一种美德,是一种美德,是一种美德
如果您不知道该类中将有多少个方法,但您知道每个方法的名称基础。然后您可以像这样迭代它们:
<?php
class Example {
public static function loop() {
self::introduction();
$name = "step_one";
$int = 2;
$formater = new NumberFormatter("en", NumberFormatter::SPELLOUT);
while (true) {
if (method_exists(get_class(), $name)) {
self::$name();
$number = $formater->format($int);
$name = "step_" . $number;
$int ++;
}
else {
break;
}
}
}
public static function introduction(){
?>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<?php
}
public static function step_one(){
?>
<p>1Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<?php
}
public static function step_two(){
?>
<p>2Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<?php
}
public static function step_three(){
?>
<p>3Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<?php
}
}
Example::loop();
?>
<?php
class Example {
public function loop() {
$methods = get_class_methods(get_class());
foreach ($methods as $method) {
if ($method != "loop") {
$this->$method();
}
}
}
public function introduction(){
?>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<?php
}
public function step_one(){
?>
<p>1Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<?php
}
public function step_two(){
?>
<p>2Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<?php
}
public function step_three(){
?>
<p>3Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<?php
}
}
$a = new Example();
$a->loop();
?>
知识是一种美德,是一种美德,是一种美德,是一种美德
1从同一个角度来看,这是一个杰出的职业,是一个临时的劳动和就业机会
2从同一角度看,这是一位杰出的领导者,他在劳动和就业方面的临时贡献
3Lorem ipsum dolor sit amet,一位杰出的献身者,在劳动和生活中暂时占有一席之地
或者,您可以按照如下声明顺序循环它们:
<?php
class Example {
public static function loop() {
self::introduction();
$name = "step_one";
$int = 2;
$formater = new NumberFormatter("en", NumberFormatter::SPELLOUT);
while (true) {
if (method_exists(get_class(), $name)) {
self::$name();
$number = $formater->format($int);
$name = "step_" . $number;
$int ++;
}
else {
break;
}
}
}
public static function introduction(){
?>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<?php
}
public static function step_one(){
?>
<p>1Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<?php
}
public static function step_two(){
?>
<p>2Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<?php
}
public static function step_three(){
?>
<p>3Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<?php
}
}
Example::loop();
?>
<?php
class Example {
public function loop() {
$methods = get_class_methods(get_class());
foreach ($methods as $method) {
if ($method != "loop") {
$this->$method();
}
}
}
public function introduction(){
?>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<?php
}
public function step_one(){
?>
<p>1Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<?php
}
public function step_two(){
?>
<p>2Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<?php
}
public function step_three(){
?>
<p>3Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<?php
}
}
$a = new Example();
$a->loop();
?>
知识是一种美德,是一种美德,是一种美德,是一种美德
1从同一个角度来看,这是一个杰出的职业,是一个临时的劳动和就业机会
2从同一角度看,这是一位杰出的领导者,他在劳动和就业方面的临时贡献
3Lorem ipsum dolor sit amet,一位杰出的献身者,在劳动和生活中暂时占有一席之地
感谢C.Liddell为我指明了正确的方向。以下是我在构造函数中所做的工作:
public function __construct(){
$methods = get_class_methods($this);
foreach($methods as $method) :
if($method === '__construct') :
continue;
endif;
$this->$method();
endforeach;
}
您可以使用get_class_方法从类中获取方法名称,但是“顺序”的概念应该被抛弃。您定义了这些方法,但PHP允许将它们按任意顺序排列。除了将每个HTML片段存储在一个herdoc数组值中,还有什么方法可以对它们进行“排序”吗?