本文目录一览:
- 1、thinkphp出现错误Class 'Home\Controller\D' not found
- 2、Thinkphp中命名空间是怎么做类文件引入的
- 3、thinkphp 虚拟模型怎么使用方法
- 4、thinkphp 怎么引用文件
- 5、ThinkPHP遇到的类私有变量赋值问题
thinkphp出现错误Class 'Home\Controller\D' not found
这句话的意思是:命名空间不正确。
ORG.Net.UploadFile这个文件的最上面写着namespace是错误的,把namespace改成use。
命名空间:是唯一识别的一套名字,这样当对象来自不同的地方但是名字相同的时候就不会含糊不清了。使用扩展标记语言的时候,XML的命名空间是所有元素类别和属性的集合。元素类别和属性的名字是可以通过唯一XML命名空间来唯一。-thinkphpnamespace
namespace:即“命名空间”,也称“名称空间” 、”名字空间”。VS.NET中的各种语言使用的一种代码组织的形式 通过名称空间来分类,区别不同的代码功能 同时也是VS.NET中所有类的完全名称的一部分。-thinkphpnamespace
【取名规则】:
1、一 :iostream和iostream.h格式不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。
2、后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。
3、 由于namespace的概念,使用C++标准程序库的任何标识符时,可以有三种选择:
直接指定标识符。例如std::ostream而不是ostream。完整语句如下: std::cout std::hex 3.4 std::endl;
使用using关键字。 using std::cout; using std::endl; using std::cin; 以上程序可以写成 cout std::hex 3.4 endl;
最方便的就是使用using namespace std;无数原有的C++代码都依赖于使用了多年的伪标准库中的功能,他们都是在全局空间下的。
所以就有了iostream.h和iostream等等这样的头文件,一个是为了兼容以前的C++代码,一个是为了支持新的标准。命名空间std封装的是标准程序库的名称,标准程序库为了和以前的头文件区别,一般不加“h”。-thinkphpnamespace
Thinkphp中命名空间是怎么做类文件引入的
thinkphp引入外部文件操作如下:
/*
类文件命名方式IDCheck.class.php
类文件里面注意要命名空间,,例如在Think文件夹下面,就要命名为namespace
Think;
*/
/*
控制器里面的写法:
引入方法:use
Think\IDCheck;
然后再实例化该类,实例化方法:$ID
=
new
IDCheck();
*/
thinkphp 虚拟模型怎么使用方法
虚拟模型是指虽然是模型类,但并不会真正的操作数据库的模型。有些时候,我们建立模型类但又不需要进行数据库操作,仅仅是借助模型类来封装一些业务逻辑,那么可以借助虚拟模型来完成。虚拟模型不会自动连接数据库,因此也不会自动检测数据表和字段信息,有两种方式可以定义虚拟模型:-thinkphpnamespace
第一种:继承Model类
namespace Home\Model;
Class UserModel extends \Think\Model {
Protected $autoCheckFields = false;
}
设置autoCheckFields属性为false后,就会关闭字段信息的自动检测,因为ThinkPHP采用的是惰性数据库连接,只要你不进行数据库查询操作,是不会连接数据库的。
第二种:不继承Model类
namespace Home\Model;
Class UserModel {
}
这种方式下面自定义模型类就是一个单纯的业务逻辑类,不能再使用模型的CURD操作方法,但是可以实例化其他的模型类进行相关操作,也可以在需要的时候直接实例化Db类进行数据库操作。
thinkphp 怎么引用文件
THINKPHP引入PHP文件和原生的是一样的,没有区别! 因为TP是基于PHP上的一个框架。
目前有两种方法,一种是include和require,还有一种是include_once和require_once。根据不同的场合使用不同的代码。前面一种是局部引入,如果不存在会提示但不会终止;后面一种引入是将被引入界面认为是现有页面的一个整体,如果不存在会终止程序并报错。-thinkphpnamespace
具体参考代码如下,include类同,具体参考上方区别:
require './path/file_name.php'; //可以执行多次,例如某个模块
require_once './path/file_name.php'; //只包含一次,一般为通用函数等
在thinkPHP中模板和css是这样的输出和引用的:
首先说模板要放在与模板对应的文件夹中,然后css和js等外部引用的文件要在你模板目录下新建一个名叫public的文件夹,css和js文件就是放在这个文件夹中的。
注意此时要更改模板(htnl文件)中的引用地址的代码,例如:
原来你引用css文件是这样引用的:
link rel="stylesheet" href="./Css/index.css" /
但是在thinkPHP中你要改成:
link rel="stylesheet" href="__public__/Css/index.css" /
__public__的意思访问当前目录下的public 文件夹,thinkPHP就会访问public文件夹。
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 脚本在编译阶段时就可以得到其值,而不依赖于运行时的信息才能求值。-thinkphpnamespace
在类的成员方法里面,可以用 - (对象运算符):$this - property(其中 property 是该属性名)这种方式来访问 非静态属性 。 静态属性 则是用 :: (双冒号):self::$property 来访问。-thinkphpnamespace
当一个方法在类定义内部被调用时,有一个可用的伪变量 $this。$this 是一个到主叫对象的引用(通常是该方法所从属的对象,但如果是从第二个对象 静态 调用时也可能是另一个对象)。
具体请参考: