Class 自动加载不工作
Class autoload not working
我是 PHP
开发的初学者,我在 PHP OO 的开发中遇到了问题。我看到使用 autoload()
函数比 include
每个 PHP Class
.
文件更好
我的疑问是:为什么我的自动加载功能不起作用?
按照我的代码:
<?php
function __autoload($class)
{
include_once "model/{$class}.class.php";
}
$avaliacaoLocal = new AvaliacaoLocal();
$avaliacaoLocal->setId(1);
$avaliacaoLocal->setIdLocal(2);
$avaliacaoLocal->setComentarios("Comentários de Pedro");
$avaliacaoLocal->setIdPessoaCliente(3);
$avaliacaoLocal->setValor(5);
var_dump($avaliacaoLocal);
文件AvaliacaoLocal.class.php
<?php
namespace model;
class AvaliacaoLocal
{
private $id;
private $valor;
private $comentarios;
private $idLocal;
private $idPessoaCliente;
public function __construct(){
$this->clear();
}
public function clear(){
$this->id = 0;
$this->valor = 0;
$this->comentarios = "";
$this->idLocal = null;
$this->idPessoaCliente = null;
}
public function getId()
{
return $this->id;
}
public function setId($id)
{
$this->id = $id;
}
public function getValor()
{
return $this->valor;
}
public function setValor($valor)
{
$this->valor = $valor;
}
public function getComentarios()
{
return $this->comentarios;
}
public function setComentarios($comentarios)
{
$this->comentarios = $comentarios;
}
public function getIdLocal()
{
return $this->idLocal;
}
public function setIdLocal($idLocal)
{
$this->idLocal = $idLocal;
}
public function getIdPessoaCliente()
{
return $this->idPessoaCliente;
}
public function setIdPessoaCliente($idPessoaCliente)
{
$this->idPessoaCliente = $idPessoaCliente;
}
}
错误:
PHP Fatal error: Class 'AvaliacaoLocal' not found in C:\Users\Pedro
........\index.php on line 14
更新:
当我使用include
和PHPreturns同样的错误:
Fatal error: Class 'AvaliacaoLocal' not found in C:\Program
Files\VertrigoServ\www\system\index.php on line 10
我已经更改文件夹以验证是否可以。
class声明属于一个命名空间,你必须这样调用它:
$avaliacaoLocal = new \model\AvaliacaoLocal();
但是现在,命名空间也包含在$class
中,所以自动加载函数需要处理:
function __autoload($class)
{
$file = str_replace(array('_', '\'), '/', $class) . '.php';
if (is_file($file)) {
require $file;
}
}
此函数采用 $class
值并将命名空间中的每个 \
(和 _
)替换为 /
以获取文件名。
我是 PHP
开发的初学者,我在 PHP OO 的开发中遇到了问题。我看到使用 autoload()
函数比 include
每个 PHP Class
.
我的疑问是:为什么我的自动加载功能不起作用?
按照我的代码:
<?php
function __autoload($class)
{
include_once "model/{$class}.class.php";
}
$avaliacaoLocal = new AvaliacaoLocal();
$avaliacaoLocal->setId(1);
$avaliacaoLocal->setIdLocal(2);
$avaliacaoLocal->setComentarios("Comentários de Pedro");
$avaliacaoLocal->setIdPessoaCliente(3);
$avaliacaoLocal->setValor(5);
var_dump($avaliacaoLocal);
文件AvaliacaoLocal.class.php
<?php
namespace model;
class AvaliacaoLocal
{
private $id;
private $valor;
private $comentarios;
private $idLocal;
private $idPessoaCliente;
public function __construct(){
$this->clear();
}
public function clear(){
$this->id = 0;
$this->valor = 0;
$this->comentarios = "";
$this->idLocal = null;
$this->idPessoaCliente = null;
}
public function getId()
{
return $this->id;
}
public function setId($id)
{
$this->id = $id;
}
public function getValor()
{
return $this->valor;
}
public function setValor($valor)
{
$this->valor = $valor;
}
public function getComentarios()
{
return $this->comentarios;
}
public function setComentarios($comentarios)
{
$this->comentarios = $comentarios;
}
public function getIdLocal()
{
return $this->idLocal;
}
public function setIdLocal($idLocal)
{
$this->idLocal = $idLocal;
}
public function getIdPessoaCliente()
{
return $this->idPessoaCliente;
}
public function setIdPessoaCliente($idPessoaCliente)
{
$this->idPessoaCliente = $idPessoaCliente;
}
}
错误:
PHP Fatal error: Class 'AvaliacaoLocal' not found in C:\Users\Pedro ........\index.php on line 14
更新:
当我使用include
和PHPreturns同样的错误:
Fatal error: Class 'AvaliacaoLocal' not found in C:\Program Files\VertrigoServ\www\system\index.php on line 10
我已经更改文件夹以验证是否可以。
class声明属于一个命名空间,你必须这样调用它:
$avaliacaoLocal = new \model\AvaliacaoLocal();
但是现在,命名空间也包含在$class
中,所以自动加载函数需要处理:
function __autoload($class)
{
$file = str_replace(array('_', '\'), '/', $class) . '.php';
if (is_file($file)) {
require $file;
}
}
此函数采用 $class
值并将命名空间中的每个 \
(和 _
)替换为 /
以获取文件名。