php基础知识学习

一、PHP常用基础知识

1、PHP的魔法函数 
  • __construct():实例化对象时被调用。

    当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。如果父类中存在魔法函数和构造函数,子类又重写构造函数,则实例化子类时调用子类中的构造函数。
  • __destruct():当删除一个对象或对象操作终止时被调用。

  • __call():对象调用某个方法,若方法存在,则直接调用;若不存在,则会去调用__call函数。

  • __get():读取一个对象的属性时,若属性存在,则直接返回属性值;若不存在,则会调用__get函数。

  • __set():设置一个对象的属性时,若属性存在,则直接赋值;若不存在,则会调用__set函数。

  • __toString() :打印一个对象的时被调用。如echo $obj;或print $obj;

    • function __toString()
          {
              return $this->content;
          }
      //输出字符串
          function toString()
          {
              return $this->content;
          }
    • 执行的结果相同. 区别在于:

      • 前一个是魔术函数, 在需要字符串值的地方会自动调用它进行对象的类型转换.(如用 echo进行输出时、强制类型转换时)

      • 后一个需要在代码中明确调用才有机会执行.

  • __clone():克隆对象时被调用。如:$t=new Test();$t1=clone $t;

  • __sleep():serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。

  • __wakeup():unserialize时被调用,做些对象的初始化工作。

  • __isset():检测一个对象的属性是否存在时被调用。如:isset($c->name)。

  • __unset():unset一个对象的属性时被调用。如:unset($c->name)。

  • __set_state():调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。

  • __autoload():实例化一个对象时,如果对应的类不存在,则该方法被调用。

2、PHP的魔法变量
  • __LINE__:返回文件中的当前行号。

  • __FILE__:返回文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。

  • __FUNCTION__:返回函数名称(PHP4.3.0新加)。自PHP5起本常量返回该函数被定义时的名字(区分大小写)。在PHP4中该值总是小写字母的。

  • __CLASS__:返回类的名称(PHP4.3.0 新加)。自PHP5起本常量返回该类被定义时的名字(区分大小写)。在PHP4中该值总是小写字母的。

  • __METHOD__:返回类的方法名(PHP5.0.0新加)。返回该方法被定义时的名字(区分大小写)。

3、public 、protected、private
  • public 表示全局,类内部外部子类都可以访问;

  • protected表示受保护的,只有本类或子类或父类中可以访问;

  • private表示私有的,只有本类内部可以使用。

4、PHP中的操作符::、->、self、$this
  • 操作符

    静态变量:静态变量是指用static声明的变量,这种变量与局部变量的区别是,当静态变量离开了它的作用范围后,它的值不会自动消亡,而是继续存在,当下次再用到它的时候,可以保留最近一次的值。
  • 自定义常量:定义方式如下: define("YEAR","2012"); 所谓自定义常量,就是指用一个字符标识来代表另外一个对象,这个对象可以是一个数值,一个字符串,一个布尔值等等。它的定义与变量有着许多相似之处。只有一点不一样,那就是变量的值在程序运行过程中可以任意更改,而自定义常量一旦定义下来后,在程序运行中就再也不能修改了。 
  • 在类的外部访问:(操作符->)  如果被引用的变量或者方法没有被声明成const或者static,那么就必须使用操作符-> (操作符:: )在访问PHP类中的成员变量或方法时,如果被引用的变量或者方法被声明成const(定义常量)或者static(声明静态),那么就必须使用操作符:: 
  • 在类的内部访问:(操作符 $this) 如果从类的内部访问不为const或者static变量或者方法,那么就必须使用自引用的$this 
  • (操作符 self) 如果从类的内部访问const或者static变量或者方法,那么就必须使用自引用的self 
  • 实例

    • <?php /* *author:ajax123 *qq:283400245 */ 
      class person{ 
          static $name="ajax123";//static声明静态属性 
          static $age=25;//static声明静态属性 
          static $address="北京";//static声明静态属性 
          function song(){ 
              echo "My name is : ".self::$name."<br>";//类内部:通过通过self 类访问静态属性 
              echo "I am ".self::$age."<br>";//类内部:通过通过self 类访问静态属性 
              echo "I live in ".self::$address."<br>";//类内部:通过self 类访问静态属性 
          } 
      } 
      echo person::$name."<br>";//类外部:通过类名person访问静态属性 
      echo person::$age."<br>";//类外部:通过类名person访问静态属性 
      echo person::$address."<br>";//类外部:通过类名person访问静态属性 
      ?>
 
5、自动转义配置 magic_quotes_gpc 和 magic_quotes_runtime

PHP提供两个方便我们引用数据的魔法引用函数magic_quotes_gpc和magic_quotes_runtime,这两个函数如果在 php.ini设置为ON的时候,就会为我们引用的数据碰到单引号'和双引号"以及反斜线 \ 时自动加上反斜线,帮我们自动转译符号,确保数据操作的正确运行,可是我们在php不同的版本或者不同的服务器配置下,有的 magic_quotes_gpc和magic_quotes_runtime设置为on,有的又是off,所以我们写的程序必须符合on和off两种情况。

那么magic_quotes_gpc和magic_quotes_runtime两个函数有什么区别呢?看下面的说明: 

  • magic_quotes_gpc 

    作用范围:WEB客户服务端;作用时间:请求开始时,例如当脚本运行时. 
  • magic_quotes_runtime 

    作用范围:从文件中读取的数据或执行exec()的结果或是从SQL查询中得到的;作用时间:每次当脚本访问运行状态中产生的数据. 

所以 magic_quotes_gpc的设定值将会影响通过Get/Post/Cookies获得的数据;magic_quotes_runtime的设定值将会影响从文件中读取的数据或从数据库查询得到的数据。 

例子说明: 

<form action="" method="post" >
STR:<input type="text" name="str">
<input type="submit">
</form>

 

<?php
/* 我们在表单里填写:    '"\    这些符号,如果magic_quotes_gpc没有开启,那么他们不会被反斜杠转义 */
echo '现在通过POST传递过来的值是:' ,$_POST['str'], '<br />'; 
if (get_magic_quotes_gpc()) {      // 检查magic_quotes_gpc是否打开,如果没有打开,用addslashes进行转义
      $str = $_POST['str'];
} else {
      $str = addslashes($_POST['str']);
} 
echo '这里是转义过后的:' ,$str, '<hr />';
$sql = "INSERT INTO lastnames (lastname) VALUES ('$str')"; 
//=====================================================================================
//-----magic_quotes_gpc只会转义:     通过Get/Post/Cookies获得的数据
//-----magic_quotes_runtime会转义:从文件中读取的数据或执行exec()的结果或是从SQL查询中得到的
//=====================================================================================
$data = implode(file('try.php'));      // 我们在里面依然写'"\这几个字符,用来测试
echo '这里是try.php的数据,';
if (get_magic_quotes_runtime()) {
      $data = $data;
      echo '被系统自带转义的' .$data;
} else {
      echo '被addslashes转义了的' .$data = addslashes($data);
} 
$sql = "INSERT INTO lastnames (lastname) VALUES ('$

转载于:https://my.oschina.net/u/3304754/blog/848709

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值