本文目录一览:
php伪静态、url重写
你的想法是完全可行的,我举个例子告诉你
你可以先看看这个文章,不懂的可以交流
apache一般都是在目录下创建.htaccess来实现伪静态,IIS不是这样的,这跟PHP本身没有关系,这是http服务器与客户端浏览器之间的约定
比如说
RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$
index.php?action=$1id=$2
意思就是说当你访问类似 a_1.html里的时候 apache自动跳转到 index.php?action=$1id=$2的地方,其中$1就是左边重写规则的第一个变量 ([a-zA-Z]{1,}),$2就是([0-9]{1,})的第二个变量-php方法重写
PHP伪静态,URL重写。
应该这样说才是,URL重写是实现PHP伪静态的方式之一,
具体如:
;y=2z=3
换成
这种伪静态方式访问的话,其他最简单的方法是在网站根目录下面建一个.htaccess 文件,其内容如下:
IfModule mod_rewrite.c
RewriteEngine on
RewriteRule /([\d]+)-([\d]+)-([\d]+)\.html /?x=$1y=$2z=$3
/IfModule
最后再APACHE的虚拟域名配置文件里面找到项目所用的域名设置项VirtualHost/VirtualHost,
在其中再找到Directory/Directory,将AllowOverride None 改成 AllowOverride All,
若没有Directory/Directory,则增加如下内容
Directory 目录路径
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
DirectoryIndex index.php
/Directory 在VirtualHost/VirtualHost中间重启APACHE即可.
thinkphp model怎么重写
thinkphp的模型,默认情况是一个数据表对应一个Model类.
创建 model类文件的方法是:
在Model文件夹下创建 XxxModel.class.php
例如:数据表名称 test
则在Model文件夹下创建类文件:TestModel.class.php
可以用下面两种方法去创建一个数据表model对象:
第一种:$Test = D('Test')
第二种:$Test = new Model('Test')
如果你的模型是没有确定的数据表可以对应(或者说需要操作多个数据表),在这种情况下,
TP提供了一个机制来解决这样的问题,尤其是你需要经常使用原生SQL的时候,这个机制会非常有帮助。
下面来看一段代码:代码:
$Model = new Model();
$list = $Model-query('select * from think_user where status=1');
当我们直接实例化Model基类的时候,是不会进行任何数据库的连接的,也不会缓存任何数据表的字段信息,所以这个模型更加纯净一点,开销也相当比较小。
当然,并不是说,在这种方式下就只能使用原生查询,你可以很好的利用新版的连贯操作功能来查询数据。例如:代码:
$Model = D(); // 和上面的new Model()等效
// TP的连贯操作的优势之一就是可以动态设置要查询的数据表
$list = $Model-field('id,name')-table('think_user')-where('status=1')-findall();
如何在php里重写php的内置函数或类
不能重写。
只能改其它名字自己写函数。
如果需要兼容PHP版本,比如新版本有这个函数,旧版本没有,旧版本上运行起来会出错。
可以用function_exists加个判断
如:
if(!function_exists('array_combine')){
function array_combine($arr1,$arr2){
//处理逻辑
}
}
这样旧版本也可以运行相关的程序了
封装 继承 多肽什么意思 php
是的面向对象的三大特点
1.封装
目的:让类更安全
做法:成员变量变为私有的,通过方法间接操作成员变量,在方法里面加限制条件
2.继承
概念:子类可以继承父类的一切
方法重写:在子类里面对父类进行方法重写
特点:单继承:一个子类可以有多个父类,一个父类可以派生出多个子类
override:方法重写
overload:重载,编辑多态
3.多态(运行多态)
概念:父类引用子类实例,由于子类里面对父类的方法进行重写,父类引用在调用该方法的时候表现出的不同状态
条件:1必须发生在集成下
2必须重写父类方法
3父类引用调用方法
如果一个方法需要一个父类参数,可以给一个子类对象