• 在子类中如果定义了__construct则不会调用父类的__construct,如果需要同时调用父类的构造函数,需要使用parent::__construct()显式的调用。
 class Car {
function __construct() {
print "父类构造函数被调用\n";
}
}
class Truck extends Car {
function __construct() {
print "子类构造函数被调用\n";
parent::__construct();
}
}
$car = new Truck();
  • 类的内部 :调用属性自身属性  $this->name   而static   self::$name
  • 如果构造函数定义成了私有方法,则不允许直接实例化对象了,这时候一般通过静态方法进行实例化,在设计模式中会经常使用这样的方法来控制对象的创建,比如单例模式只允许有一个全局唯一的对象。
 class Car {
private function __construct() {
echo 'object create';
} private static $_object = null;
public static function getInstance() {
if (empty(self::$_object)) {
self::$_object = new Car(); //内部方法可以调用私有方法,因此这里可以创建对象
}
return self::$_object;
}
}
//$car = new Car(); //这里不允许直接实例化对象
$car = Car::getInstance(); //通过静态方法来获得一个实例
  • 重载

    • 属性的重载通过__set,__get,__isset,__unset来分别实现对不存在属性的赋值、读取、判断属性是否设置、销毁属性。
    • 方法的重载通过__call来实现,当调用不存在的方法的时候,将会转为参数调用__call方法,当调用不存在的静态方法时会使用__callStatic重载。
  • 对象序列化

    • 可以通过serialize方法将对象序列化为字符串,用于存储或者传递数据,然后在需要的时候通过unserialize将字符串反序列化成对象进行使用。
 class Car {
public $name = 'car';
}
$a = new Car();
$str = serialize($a); //对象序列化成字符串
echo $str.'<br>';
$b = unserialize($str); //反序列化为对象
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__魔术方法

  定义一个常量

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

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

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

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

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

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

PHP琐碎学习的更多相关文章

  1. Architecture:话说科学家/工程师/设计师/商人

    从使命.目的.行为的不同,可以归类人群到科学家.工程师.设计师.商人等等.使命分别是:1.携带当下社会的财富对未来探索,希望引发变革:2.掌握工程全貌.完成整个工程的圣经周期:3.在工程的设计层面做文 ...

  2. Java学习笔记day07_琐碎知识_水仙花数_ASCII码_冒泡排序_简单选择排序_折半查找

    琐碎知识: 水仙花数, ASCII码, 冒泡排序, 简单选择排序, 折半查找 1.水仙花数 每位数的平方的和等于本身. 如100到999之间的水仙花数满足: 个位的平方+十位的平方+百位的平方 = 本 ...

  3. linux琐碎命令学习

    kill -l会把linux的信号都列出来.1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP6) SIGABRT 7) SIGBUS 8) SIG ...

  4. linux学习之一些琐碎知识点

    一.python 问:django中project和app之间到底有什么不同? 答:他们的区别就是一个是配置,另一个是代码. 一个project包含很多个django app以及对它们的配置.技术上, ...

  5. Android学习路线总结,绝对干货

    title: Android学习路线总结,绝对干货 tags: Android学习路线,Android学习资料,怎么学习android grammar_cjkRuby: true --- 一.前言 不 ...

  6. C Primer Plus 学习体会

    本月刚刚开始学习<C primer plus>,之前课上草草学过一遍,讲到指针就结束了.现在重新开始看感觉难度不大只是刚开始接触有些语言细节比较琐碎.学习这一周的体会如下: 诸多前辈推荐的 ...

  7. Werkzeug工具包学习-官方例子Shortly分析

    为了学习werkzeug的wsgi框架工具,今天真对官网的例子进行调试运行.涉及到了werkzeug工具包,jinja2前端模版,以及redis内存库,之后可以灵活定制自己主页.再次,作以记录. 首先 ...

  8. nodejs学习心得

    其实这次软件工程的微信公众号大作业对我来说是一个很大的挑战? 为什么这么说呢?因为我的基础太差了,实话说,到现在,c语音,java这些我恐怕就只能打出个hello world 自己太懒了,不想去学.这 ...

  9. 【基本技能篇】>>第3篇《暗时间_指导学习的方法论——心得》

    暗时间——指导学习的方法论 ——2016年2月11日 打造自己的核心竞争力:①专业领域技能:②跨领域的技能(解决问题的能力,创新思维,判断与决策能力,表达沟通能力等等):③学习能力,持续学习和思考新知 ...

随机推荐

  1. 在后台编辑器Text和Visual切换时,部分代码丢失的解决方法

    function fix_tiny_mce_before_init( $in ) { // You can actually debug this without actually needing A ...

  2. pytorch中设定使用指定的GPU

    转自:http://www.cnblogs.com/darkknightzh/p/6836568.html PyTorch默认使用从0开始的GPU,如果GPU0正在运行程序,需要指定其他GPU. 有如 ...

  3. RAISERROR 的用法(转)

    raiserror 的作用: raiserror 是用于抛出一个错误.[ 以下资料来源于sql server 2005的帮助 ]   其语法如下: RAISERROR ( { msg_id | msg ...

  4. web文件上传大小限制

    最近在项目中遇到上传文件,对上传文件的大小需要进行限制,这里学习和整理了一下一些常规的文件大小限制的方法. 一般分为两种方式,一种是服务器端判断文件大小进行限制,这种方法的存在明显的缺陷,当用户过多后 ...

  5. [BZOJ1574] [Usaco2009 Jan]地震损坏Damage(贪心 + dfs)

    传送门 告诉你一些点不能到达1,由于是双向边,也就是1不能到达那些点 那么从1开始dfs,如果当前点能到达不能到达的点,那么当前点就是损坏的. #include <cstdio> #inc ...

  6. BZOJ 4808 马 二分图最大独立集

    题目应该就是最大独立集了吧,没什么了,平面图求最大独立集需要/2的, WQH说加直接+双向边考研过,结果真的过了,应该是匈牙利算法寻找的 时候更加快了吧.(方便找边) #include<cstd ...

  7. 使用 ftrace 调试 Linux 内核,第 3 部分

    内核头文件 include/linux/kernel.h 中描述了 ftrace 提供的工具函数的原型,这些函数包括 trace_printk.tracing_on/tracing_off 等.本文通 ...

  8. amplab

    https://github.com/amplab/SparkNet https://amplab.cs.berkeley.edu/

  9. redis集群设置密码详解

    原文:http://lookingdream.blog.51cto.com/5177800/1827851 注意事项: 1.如果是使用redis-trib.rb工具构建集群,集群构建完成前不要配置密码 ...

  10. Eclipse FindBugs的安装

    原文:http://blog.sina.com.cn/s/blog_62186b460100l3mx.html 1安装:首先到官方网站下载最新版本FindBugs    http://findbugs ...