【问题标题】:Create Function in php [duplicate]在php中创建函数[重复]
【发布时间】:2013-05-12 12:08:56
【问题描述】:

我有班人

例如:

class People{
   function name($name){
      echo "the name".$name;
   }
}

如何让类自动调用函数而无需调用方法:

$var=new People ()

请给我答案?

【问题讨论】:

  • 阅读the OOP documentation的所有章节。
  • 你对静态有兴趣吗?喜欢 People::name(dave);
  • 是的,这就是我的意思,如何做到这一点?
  • 似乎他的意思是在不实例化类的情况下调用方法。

标签: php


【解决方案1】:

添加constructor function

function __construct() {
   $this->name("My name");
}

虽然这没有多大意义,但这是你要求的:-)

【讨论】:

    【解决方案2】:

    你可以使用构造函数来做你想做的事。在 php 中,这是通过在名为 __construct() 的类中声明一个方法来完成的。构造函数在对象创建时运行。所以在你的例子中

    <?php
    class People{
         public function __construct($name)
         {
             name($name);
         }
         function name($name){
            echo "the name".$name;
         }
    }
    $var = new People("dave");
    

    你可能提到的另一件事是静态,但你确实调用了一个方法,你只是不实例化类的实例

      <?php
    
    class People{
         static function name($name){
            echo "the name".$name;
         }
    }
    People::name("Dave"); 
    

    这将输出“nameDave”

    【讨论】:

      【解决方案3】:

      每次创建实例构造函数时,你只需要在你的类中显式添加它。例如:

      class People{
      
          public function __construct() {
              echo 'constructing';
          }
      
         function name($name){
            echo "the name".$name;
         }
      }
      

      但在开始做实际的事情之前,我建议阅读:http://php.net/manual/en/language.oop5.php

      编辑: 从您的 cmets 看来您想静态调用方法。如果你想在不实例化的情况下调用一个方法,你应该将函数标记为static。在您的示例中:

      public static function name($name){
        echo "the name".$name;
      }
      

      及用法:

      Person::name('my name');
      

      【讨论】:

        【解决方案4】:

        您正在寻找构造函数。

        class Bla {
         public function __construct() { // runs when class is instantiated
         }
        }
        

        【讨论】:

          【解决方案5】:

          测试一下:

          class Family {
          
              private $myself;
              private $mother = '';
              private $father = '';
          
              public function __construct($myname) {
                  $this->myself = $myname;
              }
          
              public function printFamily() {
                  print_r($this);
              }
          
              public function setFather($name) {
                  $this->father = $name;
              }
          
              public function setMother($name) {
                  $this->mother = $name;
              }
          
          }
          
          
          $fam = new Family('George Walker Bush');
          
          $fam->setFather('George Herbert Walker Bush');
          $fam->setMother('Barbara Pierce Bush');
          
          $fam->printFamily();
          

          【讨论】:

            猜你喜欢
            • 2021-11-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-04-17
            • 1970-01-01
            • 2015-01-09
            • 2015-06-20
            • 1970-01-01
            相关资源
            最近更新 更多