×

thinkphp类可以

thinkphp类可以(thinkphp yii)

admin admin 发表于2023-04-02 09:09:09 浏览42 评论0

抢沙发发表评论

本文目录一览:

thinkphp5 自动加载的类 怎么使用

ThinkPHP的类库主要包括公共类库和应用类库,都是基于命名空间进行定义和扩展的。只要按照规范定义,都可以实现自动加载。

类库存放位置:

Think目录:系统核心类库

Org目录:第三方公共类库

这些目录下面的类库都可以自动加载,只要把相应的类库放入目录中,然后添加或者修改命名空间定义。你可以在Org/Util/目录下面添加一个Image.class.php

文件,然后添加命名空间如下:

namespace Org\Util;

class Image {

}

这样,就可以用下面的方式直接实例化Image类了:$image = new \Org\Util\Image;

公共类库除了在系统的Library目录之外,还可以自定义其他的命名空间,只需要注册一个新的命名空间,在应用或者模块配置文件中添加下面的设置参数:

'AUTOLOAD_NAMESPACE' = array(

'Lib' = APP_PATH.'Lib',

)

如果类库没有采用命名空间的话,需要使用import方法先加载类库文件,然后再进行实例化,例如:定义了一个Counter类(位于Com/Sina/Util/Counter.class.php):

import('Com.Sina.Util.Couter');

$object = new \Counter();

ThinkPHP遇到的类私有变量赋值问题

Home\Common\Map.class.php文件

?php

namespace Home\Common;

class Map {

    static function getName() {

        $map = array(

            '0' = '张三',

            '1' = '李四',

            '2' = '王五',

            '3' = '赵六'

        );

        return $map;

    }

}

Home\Controller\IndexController.class.php文件

?php

namespace Home\Controller;

use Think\Controller;

use Home\Common\Map as map;

class IndexController extends Controller {

    private $sex = array(0,1);

    private $name = map::getName();  // 写法1

    // 测试 静态函数 类私有变量赋值

    public function getName() {

        $name = map::getName();        // 写法2

        var_dump($name);

    }

}

其中,写法1出错,显示:

写法2显示:

如果想私有变量赋值,可以构造函数赋值,即在__construct()里赋值:

$this-name = map::getName();    // 注意千万别写成$this-$name

类的变量成员叫做“属性”,或者叫“字段”、“特征”。属性声明是由关键字  public , protected  或者  private  开头,然后跟一个普通的变量声明来组成。 属性中的变量可以初始化,但是初始化的值必须是常数 ,这里的常数是指 PHP 脚本在编译阶段时就可以得到其值,而不依赖于运行时的信息才能求值。-thinkphp类可以

在类的成员方法里面,可以用  - (对象运算符):$this - property(其中  property  是该属性名)这种方式来访问 非静态属性 。 静态属性 则是用   :: (双冒号):self::$property 来访问。-thinkphp类可以

当一个方法在类定义内部被调用时,有一个可用的伪变量 $this。$this 是一个到主叫对象的引用(通常是该方法所从属的对象,但如果是从第二个对象 静态 调用时也可能是另一个对象)。

具体请参考:

thinkphp 怎么创建一个类,只能让其他的类来调用这个类,而外部不以访问?

外部本来就不能访问thinkphp的类,你说的应该是函数吧。

如果只是自身class访问的话用private声明

如果还允许继承访问的话用protected声明

另外thinkphp不允许外部调用“_”下划线开头的方法,即使这个方法用public声明。

用thinkPHP可以实现数组的分页显示吗

在thinkphp的框架下实现分页。公司的网站基于Thinkphp框架,一直久闻thinkphp的大名,终于有机会实战了。thinkphp是MVC架构的,MVC对于任何ITers来说都不陌生,模型(model)-视图(view)-控制器(controller)。他将逻辑和数据分开处理,少了很多繁琐的过程。其实在官方的资料中已经详细的介绍了怎么分页,传送门:-thinkphp类可以

可是并不适用于数据已经从DB中取出,并且转换为数组的情况,我接触PHP满打满算2个月,接触thinkphp不过3周。之前把很多时间花在了官方文档上,去熟悉thinkphp。也算是磨刀不误砍柴工吧。这里把官方文档当作比较进行阐述:-thinkphp类可以

(只举文档上第一个方法):利用Page类和limit方法,代码如下:

复制代码 代码如下:

$User = M('User'); // 实例化User对象

$count= $User-where('status=1')-count();// 查询满足要求的总记录数

$Page = new \Think\Page($count,25);// 实例化分页类 传入总记录数和每页显示的记录数(25)

$show = $Page-show();// 分页显示输出

// 进行分页数据查询 注意limit方法的参数要使用Page类的属性

$list = $User-where('status=1')-order('create_time')-limit($Page-firstRow.','.$Page-listRows)-select();-thinkphp类可以

$this-assign('list',$list);// 赋值数据集

$this-assign('page',$show);// 赋值分页输出

$this-display(); // 输出模板

基本思想就是先计算总的记录数,然后根据所设置的每页显示的记录数来分页。使用Thinkphp封装好的Page类可以很方便的实现。实现的重点在第11行,limit方法就是按照一定的规则从查询数据中抽取数据。但是数据已经取出又怎么办呢?-thinkphp类可以

我们用到了php自带的函数array_slice( )。定义在此:

其实就是数组版的limit方法。好了,工具找到了,实现就很容易了。直接上代码:

复制代码 代码如下:

public function nodeslist(){

$portal = new PortalApi;

$nodelist = $portal-getNodeLists($this-uid);

$count = count($nodelist['data']);

$p = new Page($count,10);

$lists = array_slice($nodelist['data'], $p-firstRow,$p-listRows);

$page = $p-show();

$this-assign('page',$page);

$this-assign('nodes',$lists);

$this-display();

}

代码有删减,只保留实现细节。

第3行getNodeLists方法从数据库中取出数据并赋值给数组nodelist。

第5行count计算出数组元素的个数。

第6行为Page类传入参数。

第7行的array_slice函数代替了limit方法。原理相同。

第9行用assign方法为模版赋值。定义在此:

第10行同理。

下面是view中的代码:

复制代码 代码如下:

div class="page-list"

{$page}

/div

如果仅仅这样的话,显示出来的效果并不友好。再找出来Page类的定义:

复制代码 代码如下:

// 分页显示定制

private $config= array(

'header' = 'span class="rows"共 %TOTAL_ROW% 条记录/span',

'prev' = '上一页',

'next' = '下一页',

'first'= '第一页',

'last' = '...%TOTAL_PAGE%',

'theme'= '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%',

在页数前后加入空格。现在可以看效果了:

如何在thinkphp里面自定义类

类文件都是以.class.php为后缀(这里是指的ThinkPHP内部使用的类库文件,不代表外部加载的类库文件),使用驼峰法命名,并且首字母大写,例如 DbMysql.class.php;

类的命名空间地址和所在的路径地址一致,例如 Home\Controller\UserController类所在的路径应该是 Application/Home/Controller/UserController.class.php; -thinkphp类可以

确保文件的命名和调用大小写一致,是由于在类Unix系统上面,对大小写是敏感的(而ThinkPHP在调试模式下面,即使在Windows平台也会严格检查大小写);

类名和文件名一致(包括上面说的大小写一致),例如 UserController类的文件命名是UserController.class.php, InfoModel类的文件名是InfoModel.class.php, 并且不同的类库的类命名有一定的规范; -thinkphp类可以

打开一个thinkphp里面自带的类文件对照着理解就好了

类的导入加载可以参考手册的命名空间和自动加载,下面是地址:

命名空间:

自动加载:

thinkphp主要有什么用

1、他是一个国人开发的php框架,本质上就是相当于将代码逻辑解耦出来,分模块管理,增强类与方法的重用的同时更好的规范代码编写结构,方便二次开发。另外一个就是封装好很多功能,如数据库连接,缓存处理等,可以直接使用以达到快速开发的目的。-thinkphp类可以

2、正如上个问题所说,他是一个国人开发的php框架,意思就是原生文档就是中文的,在我国php使用中占了相对较大的比重,所以一些常见问题可以很容易找到答案。你可以拿他来熟悉框架原理,以及开发一些日常的后台程序,快且简单。但是所有框架的好处都是以损耗性能为前提的,号称速度最快的yaf框架都会比原生php增加10%损耗(官方数据)-thinkphp类可以

综上所述,php框架有很多,主要是方便大家快速开发与减少二次开发工作量的,但本质还是php语言。很多人学习了TP之后就不会用php来做一些基本操作了(上面提到他有很多方法类已经封装好直接用就可以了)。所以最好是学习好php,理解框架的原理,这样无论公司要求你用哪个框架你都能快速上手,否则职业生涯发展会受到限制-thinkphp类可以