2

私のphpプロジェクトでは、4つのクラスを作成しました

繋がり

class Mysqliconn {

   public $mysqli;  

   public function __construct(){
      include "dbconfig.php";
      $this->connect($host, $user, $password, $database, $charset);
   }

   public function connect (.....)
      $this->mysqli = new mysqli(......);
   }
}

アップロード

class Upload {

     private $db;

     public function __construct( Mysqliconn $db ) {
        $this->db = $db; 
     }

     public function getID($id) {
        echo $id;
     }
}

ユーザー

class Users {

 private $db;

      public function __construct( Mysqliconn $db ) {
          $this->db = $db; 
      }

      public function getName($name) {
      echo $name;
      }
}

class Cars {

     private $db;

     public function __construct( Mysqliconn $db ) {
            $this->db = $db; 
     }

     public function getCars($cars) {
        echo $cars;
     }
 }

私のphpページでは、この方法でクラスをインスタンス化します

function __autoload($class_name) {
    if(file_exists('class/class.' . strtolower($class_name) . '.php')) {
        require_once('class/class.' . strtolower($class_name) . '.php'); 
    }
    else {
        throw new Exception("Unable to load $class_name.");
    }
}

$db = new Mysqliconn();
$up = new Upload($db);
$us = new Users($db);
$cs = new Cars($db);

$cs->getCars('BMW');
$us->getName('Foo');

私の Cars クラスでは、Users および Upload クラスのメソッドを呼び出したいと思います。することは可能ですか?どうすればこれを行うことができますか? ありがとう。

4

2 に答える 2

2
class Example{

    public function __construct(){
        $otherClass = new OtherClass();
        $otherClass->functionInOtherClass();
    }

}

また

class Example{

    public function __construct($objFromOtherClass){
        $objFromOtherClass->functionInOtherClass();
    }

}

また

class Example{

    public function __construct(OtherClass $objFromOtherClass){
        $objFromOtherClass->functionInOtherClass();
    }

}

問題のオブジェクトがExampleクラス全体で使用される場合:

class Example{

    protected $objFromOtherClass;

    public function __construct(OtherClass $objFromOtherClass){
        $this->objFromOtherClass = $objFromOtherClass;
    }

    public function test(){
        $this->objFromOtherClass->functionInOtherClass();
    }

}
于 2013-11-06T16:12:20.673 に答える
1

他のクラス内で public static 関数を呼び出すことができます。

class Users {

private $db;

  public function __construct( Mysqliconn $db ) {
      $this->db = $db; 
  }

  public static function getName($name) {
  echo $name;
  }
}


class Cars {
 private $db;

 public function __construct( Mysqliconn $db ) {
        $this->db = $db; 
 }

 public function getCars($cars) {
    echo $cars;
 }

    public function callGetName($name)
   {
         return  Users:: getName($name) ;
   }
}

別のオプションは次のとおりです。

function callGetName($name)
 {
   $user = new Users();
   $user->getName($name);
 }
于 2013-11-06T16:17:45.777 に答える