Php 如何调用类方法?

Php 如何调用类方法?,php,class,oop,methods,Php,Class,Oop,Methods,当我尝试使用私有函数sqlConnection(){ 我有以下代码: <?php require "transferDao/daoTransferProyectos.php"; class daoProyectos{ private function sqlConnection(){ try { $servername = "localhost"; $username = "root"; $pas

当我尝试使用
私有函数sqlConnection(){

我有以下代码:

<?php
require "transferDao/daoTransferProyectos.php";
class daoProyectos{
private function sqlConnection(){

        try {

            $servername = "localhost"; 
            $username = "root";
            $password = "123asd";
            $conn = new PDO("mysql:host=$servername;dbname=bd_actividades", $username, $password);
            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  

        }
        catch(PDOException $e)
        {
        echo "Connection failed: " . $e->getMessage();
        }
    }   
 public function resultSelect(){

            $aObjects=array();

            $db = sqlConnection();
            $stmt = $db->prepare("SELECT pro_id, pro_nombre FROM act_proyecto");
            $stmt->execute();
            $stmt->setFetchMode(PDO::FETCH_ASSOC);
            $result = $stmt->fetchAll();

            foreach ($result as $row) {
            $aTransfer = new daoTransferProyectos();
            $aTransfer->setId($row['pro_id']);
            $aTransfer->setNombreProyecto($row['pro_nombre']);
            $aObjects[]=$aTransfer;
            }
            return $aObjects;
    }
}
?>
然后我得到一个新的错误:

[Mon Jun 01 22:11:00.530604 2015][:error][pid 7015][client 10.0.2.2:61957]PHP致命错误:在第29行的/var/www/html/PROJECTS/dailytasks/dao/daoProyectos.PHP中对非对象调用成员函数prepare(),请参考:

这:

应该是:

$db = $this->sqlConnection();
    //^^^^^^^ See here
换句话说,您试图调用一个不存在的全局函数,而不是对象的方法

function foo() {
   echo 'global function foo';
}

class bar() {
   function foo() {
      echo 'method foo';
   }
   function bar() {
      foo();        // prints: global function foo
      $this->foo(); // prints: method foo
   }
}

这个:

应该是:

$db = $this->sqlConnection();
    //^^^^^^^ See here
换句话说,您试图调用一个不存在的全局函数,而不是对象的方法

function foo() {
   echo 'global function foo';
}

class bar() {
   function foo() {
      echo 'method foo';
   }
   function bar() {
      foo();        // prints: global function foo
      $this->foo(); // prints: method foo
   }
}

添加以下内容:

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
return $conn;  <-- add this line
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常);
返回$conn;添加以下内容:

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
return $conn;  <-- add this line
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常);

返回$conn;在它前面放一个
$this->
如果成功,你还需要方法
sqlConnection
来返回$conn;
。在它前面放一个
$this->
如果成功,你还需要方法
sqlConnection
来返回$conn;
。我们不是有一个副本吗?否则我们现在有了。。(顺便说一句:他还遗漏了一些其他东西)嗨,谢谢你的回答,现在我编辑时出现了一个新的错误,我把$db=$this->sqlConnection();。@MarcB Search在他返回连接的地方:)@JeanAndrésBergeretFuhrhop再次查看你的
sqlConnection()
method并查看返回连接变量的位置:)我将return$conn和$db=$this->sqlConnection();,现在一切都好了,谢谢你!我们不是有一个副本吗?否则我们现在有了…(顺便说一句:他还缺少一些其他东西)您好,谢谢您的回答,现在当我将$db=$this->sqlConnection();@MarcB Search放置在他返回连接的位置:)@JeanAndrésBergeretFuhrhop再次查看您的
sqlConnection()
方法并查看您返回连接变量的位置:)我将return$conn和$db=$this->sqlConnection()放置在哪里现在一切都好了,谢谢你!