我正在构建基于Slim Framework的应用程序,我已经有了一些工作代码。要返回带有项目列表的JSON响应,我写了以下内容:
控制器类(controllerProyectos.php
)
<?php
require "transferController/transferProyectos.php";
class NombreProyecto {
public function getProyectos() {
$list = array();
foreach ($this->fillObject() as $sKey => $oValue) {
$list[] = array(
'id' => $oValue->getId(),
'nombre_proyecto' => $oValue->getNombre(),
'state' => $oValue->getState(),
);
}
return $list;
}
private function fillObject() {
$aObjects = array();
for ($i = 0; $i < 5; $i++) {
$oTransfer = new TransferProyeCtr();
$oTransfer->setId($i);
$oTransfer->setNombre("proyecto " . $i);
$oTransfer->setState(1);
$aObjects[] = $oTransfer;
}
return $aObjects;
}
}
前置控制器(index.php
)
<?php
require "vendor/autoload.php";
$sPathApi = "/api/sistemaTareas/";
$app = new \Slim\Slim();
$app->get($sPathApi . $sVersion . 'proyectos', function () {
require "controller/controllerProyectos.php";
$oProyecto = new NombreProyecto();
header('Content-Type: application/json');
echo json_encode($oProyecto->getProyectos());
exit();
});
模型类(transferProyectos.php
)
<?php
class TransferProyeCtr {
private $sNombre;
private $iId;
private $iState;
public function getNombre() {
return $this->sNombre;
}
public function setNombre($nombre) {
$this->sNombre = $nombre;
}
public function getId() {
return $this->iId;
}
public function setId($Id) {
$this->iId = $Id;
}
public function getState() {
return $this->iState;
}
public function setState($state) {
$this->iState = $state;
}
}
正如您所看到的,我在控制器中使用了一些模型数据。当我对我的应用程序发出AJAX请求时,我在下拉列表中得到以下结果:
- proyecto 1
- proyecto 2
- proyecto 3
- proyecto 4
- proyecto 5
到目前为止,一切都按预期工作。但我想从该控制器中的数据库返回实际数据。
我写了一个函数(在bdconnection.php
文件内)来打开数据库连接:
<?php
function connect_db() {
$server = 'localhost';
$user = 'root';
$pass = '123asd';
$database = 'bd_actividades';
$connection = new mysqli($server, $user, $pass, $database);
return $connection;
}
我认为在我的控制器中我需要类似的东西:
public function getPro() {
require "sistema/bdconnection.php";
$sql = "select pro_nombre FROM act_proyecto";
try {
$db = connect_db();
$stmt = $db->query($sql);
$users = $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
echo json_encode($users);
} catch(PDOException $e) {
echo json_encode($e->getMessage());
}
}
并将$oTransfer->setNombre("proyecto " . $i);
替换为$oTransfer->setNombre($users);
,但我不确定。
只是为了向大家介绍一下我的应用程序的更多细节,这里将介绍文件结构和数据库数据: