标签归档:thinkphp

ThinkPHP中,控制器继承中的construct

在用ThinkPHP开发过程中,经常会创建一个CommonController的控制器来作为基类,而不是Controller直接作为基类,因为我们我可以灵活的在CommonController中添加一些设置,来让所有的子类都有这个属性和这方法,比如

我们可以在CommonController中的构造函数中__construct定义页面的编码方式,这样其他的控制器类在使用的时候也会使用定义的编码。

但是有时候我们在子类的控制器中写一些方法比如$this->assign('version’,'12');会提示不存在的方法,明明this就是类本身,怎么会不存在assign这个方法了呢,原来,我们在构造函数的写法中,需要子类继承父类的构造函数才能正确使用。

class CommonController extends Controller
{
    public function __construct()
    {
       header("Content-type: text/html; charset=utf-8"); 
    }
}

class NewsController extends CommonController
{
    public function __construct()
    {
        //不写这句就会报错
        parent::construct();
        
    }
}

Thinkphp 缓存问题(数据库字段缓存)

当我们上线产品的时候,我们需要关闭debug,同时上传的时候不需要上传Runtime 这个文件夹,因为这个里面缓存了很多数据,一旦我们关闭了debug,默认情况下它走的是缓存,所以当我们修改了数据库的字段,第一要做的就是删除这个文件夹里面的数据,否则,可能产生一旦开启debug程序就好使,关闭debug程序就不好使的问题,这个问题100%都是缓存造成的。

thinkphp部署注意事项

thinkphp 部署的时候需要注意一些事项:否则你会发现一些本地环境明明没有任何问题,但是服务器上却是运行错误。

1.对配置文件的修改,因为本机和服务器的数据库或者其他配置不一定是一致的。

2.需要清除缓存文件 -runtime.php,因为这里缓存了一些配置文件,当缓存开启的时候,虽然你修改了配置文件,但是它还是用的原来的配置文件。

3.为了防止密码泄露和安全问题,需要关闭debug. define(‘APP_DEBUG’,false);