犯了几个小错误,出来分享一下
发布于:2022-01-17 09:50:54
#1 freeman9981
1控制器的文件名一定和类名一致,否则系统报错,如文件名(控制器名)为test1.php 控制器内部写 class test extends spController{}
2,动作名和控制器名(亦动作名) 不能相同
class test extends spController
{
function test()
{
}
}
?>
编译器报错:Fatal error: Call to a member function assign() on a non-object inD:\WWW\framework\SpeedPHP\SpeedPHP\Core\spController.php
on line
79
3、缺少与模板相应的属性,外加动作名和控制器名同名
class test extends spController
{
function test()
{
//$this->one="abc";
$this->display("a.html");
}
}
?>
编译器报错Fatal error: Call to a member function display() on a non-object in
D:\WWW\framework\SpeedPHP\SpeedPHP\Core\spController.php
on line
102
4、属性名写错不出效果
控制器里的
$one="abc";
$this->display("a.html");
模板里的
$this->one是类的属性
而$one 是变量
ok希望对有遇到同样困惑的人有所帮助
2010-11-16 22:38:39
#2 jake
:handshake
2010-11-18 10:06:14
#3 coolcool1265
;P 刚开始学的时候,还真的遇到了些这样的问题。
2010-11-18 23:21:46
#4 lintou
不错,记录了
2010-11-26 23:19:00
#5 孤舟垂钓
谢谢你到分享
class a extends spController
{
function a(){
$this->display("a.html");
}
}
Fatal error: Call to a member function display() on a non-object in D:\file\PHP\wamp\www\speedphp3\SpeedPHP\Core\spController.php on line 105
2012-09-12 00:27:38
#6 孤舟垂钓
类名和方法名一样造成的
2012-09-12 00:29:29
#7 jake
孤舟垂钓 发表于 2012-9-12 00:29
类名和方法名一样造成的
为什么类名和方法的名称需要不一样呢,其实很简单,控制器也是一个类,与类名相同的方法,在PHP语法里面称作构造函数,构造函数有特殊的作用,所以不能像普通的action函数一样调用。
了解一下PHP语法:
http://cn.php.net/manual/zh/language.oop5.decon.php
2012-09-12 08:41:50
#8 dcb110
本帖最后由 dcb110 于 2016-5-5 01:31 编辑 Fatal error: Call to a member function assign() on null in E:\downloads\Apache24\htdocs\controller\lol.php on line 8
class lol
extends spController{
public function __construct()
{
parent::
__construct()
; // 要先启 ...
}
function mn(){
$smarty->
assign(
'Contacts',
array(
'fax' =>
'555-222-9876',
'email' =>
'zaphod@slartibartfast.example.com',
'phone' =>
array(
'home' =>
'555-444-3333',
'cell' =>
'555-111-1234')
)
)
;
$smarty->
display(
'do.html')
;
}
}求解
2016-05-05 01:29:50
#9 jake
dcb110 发表于 2016-5-5 01:29
Fatal error: Call to a member function assign() on null in E:\downloads\Apache24\htdocs\controller\l ...
PHP的基础知识: 变量起码得先赋值才能用
你看看mm()方法里面的$smarty局部变量,从哪儿来的?
看手册
http://www.speedphp.com/thread-3749-1-1.html在控制器中如何获取Smarty对象?
$smarty = $this->getView();
2016-05-05 08:46:03
#10 dcb110
谢谢老大,是我没弄明白怎么在控制器里怎么获取$smarty对象
原来用$smarty=$this->getview();为什么$smarty=new Smarty()不行呢
2016-05-05 21:27:04
#11 jake
smarty被封装了。除非自行引入smarty类。
另外,建议看看入门教程6,assign这个其实有点啰嗦了。
2016-05-06 08:41:33
#12 Lijunno1
非常有道理。
2016-05-07 01:22:44