犯了几个小错误,出来分享一下

#1 freeman9981

1控制器的文件名一定和类名一致,否则系统报错,如文件名(控制器名)为test1.php 控制器内部写 class test extends spController{} QQ截图未命名.png
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");


模板里的
            
            
  • <{$one}>





$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 8class 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

jake 发表于 2016-5-5 08:46
PHP的基础知识: 变量起码得先赋值才能用

你看看mm()方法里面的$smarty局部变量,从哪儿来的?
谢谢老大,是我没弄明白怎么在控制器里怎么获取$smarty对象
原来用$smarty=$this->getview();为什么$smarty=new Smarty()不行呢

2016-05-05 21:27:04

#11 jake

dcb110 发表于 2016-5-5 21:27
谢谢老大,是我没弄明白怎么在控制器里怎么获取$smarty对象
原来用$smarty=$this->getview();为什么$smar ...
smarty被封装了。除非自行引入smarty类。

另外,建议看看入门教程6,assign这个其实有点啰嗦了。

2016-05-06 08:41:33

#12 Lijunno1

非常有道理。

2016-05-07 01:22:44