请选择 进入手机版 | 继续访问电脑版

SpeedPHP框架

 找回密码
 注册成为新用户

QQ登录

只需一步,快速开始

查看: 8787|回复: 11

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

[复制链接]
发表于 2010-11-16 22:38:39 | 显示全部楼层 |阅读模式
1控制器的文件名一定和类名一致,否则系统报错,如文件名(控制器名)为test1.php 控制器内部写 class test extends spController{}
2,动作名和控制器名(亦动作名) 不能相同
  1. <?php
  2.         class test extends spController
  3.         {
  4.                 function test()
  5.                 {
  6.                 }
  7.         }
  8. ?>
复制代码


编译器报错:Fatal error: Call to a member function assign() on a non-object inD:\WWW\framework\SpeedPHP\SpeedPHP\Core\spController.php
on line
79
3、缺少与模板相应的属性,外加动作名和控制器名同名
  1. <?php
  2.         class test extends spController
  3.         {
  4.                 function test()
  5.                 {
  6.                         //$this->one="abc";
  7.                         $this->display("a.html");
  8.                 }
  9.         }
  10. ?>
复制代码




编译器报错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、属性名写错不出效果
控制器里的
  1. $one="abc";
  2.                         $this->display("a.html");
复制代码


模板里的
  1. <ul>        
  2.         <li><{$one}></li>
  3. </ul>
复制代码




$this->one是类的属性
而$one 是变量




ok希望对有遇到同样困惑的人有所帮助

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册成为新用户

x
发表于 2010-11-18 10:06:14 | 显示全部楼层
发表于 2010-11-18 23:21:46 | 显示全部楼层
刚开始学的时候,还真的遇到了些这样的问题。
发表于 2010-11-26 23:19:00 | 显示全部楼层
不错,记录了
发表于 2012-9-12 00:27:38 | 显示全部楼层
谢谢你到分享
  1. class a extends spController
  2. {
  3.         function a(){
  4.                 $this->display("a.html");
  5.         }
  6. }
复制代码
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-9-12 00:29:29 | 显示全部楼层
类名和方法名一样造成的
发表于 2012-9-12 08:41:50 | 显示全部楼层
孤舟垂钓 发表于 2012-9-12 00:29
类名和方法名一样造成的

为什么类名和方法的名称需要不一样呢,其实很简单,控制器也是一个类,与类名相同的方法,在PHP语法里面称作构造函数,构造函数有特殊的作用,所以不能像普通的action函数一样调用。

了解一下PHP语法:http://cn.php.net/manual/zh/language.oop5.decon.php
发表于 2016-5-5 01:29:50 | 显示全部楼层

smarty模板调用错误

本帖最后由 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-5-5 08:46:03 | 显示全部楼层
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-5-5 21:27:04 | 显示全部楼层
jake 发表于 2016-5-5 08:46
PHP的基础知识: 变量起码得先赋值才能用

你看看mm()方法里面的$smarty局部变量,从哪儿来的?

谢谢老大,是我没弄明白怎么在控制器里怎么获取$smarty对象
原来用$smarty=$this->getview();为什么$smarty=new Smarty()不行呢
您需要登录后才可以回帖 登录 | 注册成为新用户

本版积分规则

手机浏览|简版|中文PHP框架|开源协议|SpeedPHP.com ( 粤ICP备08008671号

GMT+8, 2019-12-16 08:18

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表