1、意思上的区别
self代表类,$this代表对象(self是引用静态类的类名,而$this是引用非静态类的实例名)
2、用法上的区别
能用$this的地方一定使用self,能用self的地方不一定能用$this。
扩展资料:Python中self用法详解
1、以Student类为例,在Python中,定义类如下:
class Student(object):
pass
(Object)表示该类从哪个类继承下来的,Object类是所有类都会继承的类。
2、实例:定义好了类,就可以通过Student类创建出Student的实例,创建实例是通过类名+()实现:
student = Student()
3、由于类起到模板的作用,因此,可以在创建实例的时候,把我们认为必须绑定的属性强制填写进去。这里就用到Python当中的一个内置方法__init__方法,例如在Student类时,把name、score等属性绑上去:
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
self对应static$this是非static这两者总和相当于Java里面的thisparent相当于Java里面的super我问你你要在子类中执行父类的构造器怎么执行?TankMe
发表于
2009-9-9
16:19[i]self是这个类。this是这个类现在创建的对象。而不是单纯的只指静态非静态。self从理论上在php里是可以调用任何东西的。。。php6可以支持直接调用静态和非静态。因为他是和::符配合的。。。只要是这个类里面的任何成员和方法都能调用。。。你把php所有错误提示关闭。就可以执行。。。我记得我以前测试过一下的。。。php5貌似会抛出一个warring。。我忘记当时测试的结果了。但是从文档上看到得这理论是可行的
$PHP_SELF表示当前的php文件这是php的几个系统的变量比如你的a.php文件在/www/g/f/那么如果你只是echo$PHP_SELF那么就会得到/www/g/f/a.php另外php这样系统函数还有不少比如$REMOTE_ADDR表示获取客户端的ip这些东西在phpinfo()中都可以看到注意这里这些字母都是大写的你说的下面那个问题是由于那个offset变量的值影响到了内部的sql语句打个比方说里面的代码是这样写的$sql="select*fromtable"if($offset)$sql=$sql."orderby".$offset//如果offset有值那么就按照$offset的字段名排序当offset为0时用默认的排序这里比如你的表中有一个name字段你在超链接中可以这样下?offset=name但是当人为的输入了offset=asd的时候满足$offset不为空的条件所以真个sql就变成了select*fromtableorderbyasd因为asd字段在数据库中没有所以这个时候就会出现sql执行的错误提示当然这种提示会暴露出一些错误这方便在调试的时候检查代码但是也带来了一定的安全隐患所以php代码在执行的时候你可以选择两种处理错误的的方式一是:在函数前加上@符号可以完全屏蔽程序输出的错误二是:使用ordie比如很常见的在mysql的连接函数mysql_connect("localhost","root","")ordie("无法连接到数据库服务器")所以你上面的问题就是只要你找到那个mysql_fetch_row()改为@mysql_fetch_row()或者在后面加上ordie("所提供的查询结果不是一个有效的mysql返回结果")我也是一个php爱好者大家共同学习共同进步欢迎分享,转载请注明来源:内存溢出
评论列表(0条)