• PHP琐碎学习


    • 在子类中如果定义了__construct则不会调用父类的__construct,如果需要同时调用父类的构造函数,需要使用parent::__construct()显式的调用。
     1 class Car {
     2    function __construct() {
     3        print "父类构造函数被调用
    ";
     4    }
     5 }
     6 class Truck extends Car {
     7    function __construct() {
     8        print "子类构造函数被调用
    ";
     9        parent::__construct();
    10    }
    11 }
    12 $car = new Truck();
    •  类的内部 :调用属性自身属性  $this->name   而static   self::$name
    • 如果构造函数定义成了私有方法,则不允许直接实例化对象了,这时候一般通过静态方法进行实例化,在设计模式中会经常使用这样的方法来控制对象的创建,比如单例模式只允许有一个全局唯一的对象。
     1 class Car {
     2     private function __construct() {
     3         echo 'object create';
     4     }
     5 
     6     private static $_object = null;
     7     public static function getInstance() {
     8         if (empty(self::$_object)) {
     9             self::$_object = new Car(); //内部方法可以调用私有方法,因此这里可以创建对象
    10         }
    11         return self::$_object;
    12     }
    13 }
    14 //$car = new Car(); //这里不允许直接实例化对象
    15 $car = Car::getInstance(); //通过静态方法来获得一个实例
    • 重载
      • 属性的重载通过__set,__get,__isset,__unset来分别实现对不存在属性的赋值、读取、判断属性是否设置、销毁属性。
      • 方法的重载通过__call来实现,当调用不存在的方法的时候,将会转为参数调用__call方法,当调用不存在的静态方法时会使用__callStatic重载。
    • 对象序列化
      • 可以通过serialize方法将对象序列化为字符串,用于存储或者传递数据,然后在需要的时候通过unserialize将字符串反序列化成对象进行使用。
    1 class Car {
    2     public $name = 'car';
    3 }
    4 $a = new Car();
    5 $str = serialize($a); //对象序列化成字符串
    6 echo $str.'<br>';
    7 $b = unserialize($str); //反序列化为对象
    8 var_dump($b);
    • 单引号和双引号到底有啥区别呢?
      •   

        PHP允许我们在双引号串中直接包含字串变量

        而单引号串中的内容总被认为是普通字符。

        比如:

        $str='hello';
        echo "str is $str"; //运行结果: str is hello
        echo 'str is $str'; //运行结果: str is $str
    • 文件有很多元属性,包括:文件的所有者、创建时间、修改时间、最后的访问时间等。

      fileowner:获得文件的所有者
      filectime:获取文件的创建时间
      filemtime:获取文件的修改时间
      fileatime:获取文件的访问时间

      其中最常用的是文件的修改时间,通过文件的修改时间,可以判断文件的时效性,经常用在静态文件或者缓存数据的更新。

      $mtime = filemtime($filename);
      echo '修改时间:'.date('Y-m-d H:i:s', filemtime($filename));
    •  文件上传原理

      将客户端的文件上传到服务器,再将服务器端的临时文件移动到指定目录即可。

    • PDO对象的方法
        
    方法 描述
    exec() 执行一条SQL语句,并返回其受影响的行数
    query() 执行一条SQL语句,返回一个PDOStatement对象
    prepare() 准备要执行的SQL语句,返回PDOStatement对象
    quote() 返回一个添加引号的字符串,用于SQL语句中
    lastInsertId()  返回最后插入行的ID
    setAttribute() 设置数据库链接属性
    getAttribute() 得到数据库连接的属性
    errorCode() 获取跟数据库句柄上一次操作相关的 SQLSTATE
       
     
     
     
     
     
     
     
     
     
     
     
     setInc和setDec方法。对于统计字段(通常指的是数字类型)的更新:
    $Model->setInc(‘score’,'id=5′,3); // 用户的积分加3
    $Model->setInc(‘score’,'id=5′); // 用户的积分加1
    $Model->setDec(‘score’,'id=5′,5); // 用户的积分减5
    $Model->setDec(‘score’,'id=5′); // 用户的积分减1
     
    •  __FILE__魔术方法

      定义一个常量

    1 <?php 
    2 define('ROOT_PATH',__FILE__ );
    3 echo ROOT_PATH;

    结果 :F:WWW est.php    也就是实际路径

    1 <?php 
    2 define('ROOT_PATH',dirname(__FILE__) );
    3 echo ROOT_PATH;

    这样就相当于引入了域名地址:

    1 <?php 
    2 define('ROOT_PATH',dirname(__FILE__) );
    3 require_once ROOT_PATH.'/index.php';

    <?php
    define('ROOT_PATH',dirname(__FILE__) );
    require_once ROOT_PATH.'/index.php';

  • 相关阅读:
    杂记5
    杂记4
    杂记3
    杂记2
    杂记1
    也来个网页版本的五子棋
    验证码识别
    npm publish命令
    window nginx php ci框架环境搭建
    也来个网页版本的五子棋
  • 原文地址:https://www.cnblogs.com/vanone/p/5373627.html
Copyright © 2020-2023  润新知