2015-06-01 139 views
-1

我有我的代码有问题,当我尝试使用公共职能setDatos($ aDatosPro){我该如何解决这个错误,这个PHP?

我有controllerProyectos.php

<?php 
require "dao/daoProyectos.php"; 
class NombreProyecto { 

    public function getProyectos() { 

      $aTransfer = new daoProyectos(); 
      $this->setDatos($aTransfer); 

    } 

    public function setDatos($aDatosPro){ 

    $obj = $aDatosPro->resultSelect(); 

    foreach($this->$obj as $sKey=>$oValue){    
      $list[] = array('Id' => $oValue->getId(),'nombre_proyecto' =>$oValue->getNombreProyecto()/*,'state' =>$oValue->getState()*/); 
    } 
    return $list; 

    } 
} 
?> 

而且我有这样的错误:

在/var/www/html/PROJECTS/dailytasks/controller/controllerProyectos.php:17

消息'class daoProyectos的对象无法转换为字符串'的异常'ErrorException'

dao/daoProyectos.php

<?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); 
      return $conn; 
     } 
     catch(PDOException $e) 
     { 
     echo "Connection failed: " . $e->getMessage(); 
     } 
    } 
public function resultSelect(){ 

      $aObjects=array(); 

      $db = $this->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; 
    } 
} 
?> 
+0

邮编因为错误指向此文件。 – alexandreferris

+0

我编辑,这是controllerProyectos.php –

+0

@JoseManuelAbarcaRodríguez我不知道我的头在哪里..对不起,我编辑,是“公共函数setDatos($ aDatosPro)” –

回答

1

如果你看看更仔细地在这里;

public function setDatos($aDatosPro){ 

    $obj = $aDatosPro->resultSelect(); 

    foreach($this->$obj as $sKey=>$oValue){ 

您设置resultSelect返回值OBJ $(局部变量),但在$做一个foreach这个 - > OBJ这是您尚未设置对象的属性。

尝试将其更改为;

public function setDatos($aDatosPro){ 

    $this->obj = $aDatosPro->resultSelect(); 

    foreach($this->$obj as $sKey=>$oValue){ 

或完全取出var如下;

public function setDatos($aDatosPro){ 

    foreach($aDatosPro->resultSelect() as $sKey=>$oValue){ 

希望这有助于`/ controllerProyectos.php`的

+0

我做过foreach($ aDatosPro-> resultSelect()为$ sKey => $ oValue){我没有任何错误,谢谢 –