PHP学习记录(二)

一、数组:

1、创建一个新的数组:$arr = array();

2、php有两种数组,索引数组与关联数组。
  索引数组:下标0123,像JS里的数组一样。
  关联数组:下标为字符串,像JS里的json对象一样。

3、索引数组的赋值:有三种形式:$arr=array("苹果");  $arr[0]="苹果";  $arr=array(0=>"苹果");
  关联数组的赋值:有两种形式:$arr = array("apple"=>"苹果");  $arr["apple"]="苹果";

二、函数:

1、函数中如果没有return,默认返回值为NULL。

2、可变函数:通过变量的值来调用函数。  调用方法:变量名加括号。
  例:function f1(){};  $name=f1;  $name();

3、判断函数是否存在:function_exists(函数名),返回值为 true / false 。类似的还有 class_exists()、file_exists()、method_exists()。

三、类与面向对象。

1、类:类是一类东西的结构描述,二对象则是一类东西的一个具体实例。

2、类的定义: class Car{  };  实例类:new Car();

3、类的属性:类中定义的变量称之为属性,也叫类的字段。由 属性声明 变量名组成。
  属性声明:public、protected、private:表示公开的、受保护的、私有的。默认为public。
  访问:一般通过->来访问对象的方法或属性。对于静态属性则使用::进行访问。

4、类的方法:类里的function称为方法,声明同样有public、protected、private。
  静态方法:使用static声明的,称为静态方法,静态方法不需要实例化对象,可以通过类名::直接调用。

5、构造函数:在类中使用__construct()定义一个构造函数,会在对象初次实例化的时候调用,常用来进行一些初始化操作。

6、析构函数:在类中使用__destruct()定义,当对象的所有引用被删除,或对象被显式地销毁( 如unset() )时会执行的函数。

7、静态关键字static:静态属性和方法可以不再实例化的情况下调用,使用 类名::方法名 的方式调用。  ps:不能通过->形式调用。
  静态方法中,不能使用$this,但可以使用self、parent、static在内部进行调用。

8、访问控制:
  public:可以在任何地方被访问。
  protected:只可以在其自身、子类或父类中访问。
  private:只在当前类中进行访问。
  类的属性:必须制定访问控制类型。

9、对象继承:class 子类 extends 父类{  } ;

10、重载:动态创建属性和方法,是通过魔术方法实现的。
  属性的重载:通过 __set、__get、__isset、__unset 实现对属性的 赋值、读取、判断、销毁。
  方法的重载:通过 __call 实现。当调用不存在的方法时,就会执行__call方法。

11、对象其他特性:
  对象比较:同一个类的两个对象,如果所有属性都相等,==值为true。如果两个对象是同一个引用地址,则===值为true。
  对象克隆:$obj2 = clone $obj1 ;
  对象序列化:使用serialize()进行序列化,使用unserialize()进行反序列化。 $str = serialize($obj); $obj = unserialize($str);

时间: 2024-10-28 21:27:04

PHP学习记录(二)的相关文章

Windows API 编程学习记录<二>

恩,开始写Windows API编程第二节吧. 上次介绍了几个关于Windows API编程最基本的概念,但是如果只是看这些概念,估计还是对Windows API不是很了解.这节我们就使用Windows API 让大家来了解下Windows API的用法. 第一个介绍的Windows API 当然是最经典的MessageBox,这个API 的作用就是在电脑上显示一个对话框,我们先来看看这个API的定义吧: int WINAPI MessageBox(HWND hWnd, LPCTSTR lpTe

Spring Boot学习记录(二)--thymeleaf模板

Spring Boot学习记录(二)–thymeleaf模板 标签(空格分隔): spring-boot 自从来公司后都没用过jsp当界面渲染了,因为前后端分离不是很好,反而模板引擎用的比较多,thymeleaf最大的优势后缀为html,就是只需要浏览器就可以展现页面了,还有就是thymeleaf可以很好的和spring集成.下面开始学习. 1.引入依赖 maven中直接引入 <dependency> <groupId>org.springframework.boot</gr

netty 学习记录二

netty 最新版本是netty-5.0.0.Alpha1,去年10月份发布的,至今没有发新版本,估计这个版本还是比较稳定. 整包下载,里面包含一个 netty-example-5.0.0.Alpha1-sources.jar文件,提供了比较丰富的example例子,多看几遍还是非常有收获的,这里记录下. 先来看下channelHandler的两个不同继承: 方式一:直接从ChannelHandlerAdapter类里继承,读取操作从channelRead方法里执行 @Sharable publ

Mybatis学习记录(二)--Mybatis开发DAO方式

mybatis开发dao的方法通常用两种,一种是传统DAO的方法,一种是基于mapper代理的方法,下面学习这两种开发模式. 写dao之前应该要对SqlSession有一个更加细致的了解 一.mybatis的SqlSession使用范围 SqlSessionFactoryBuilder用于创建SqlSessionFacoty,SqlSessionFacoty一旦创建完成就不需要SqlSessionFactoryBuilder了,因为SqlSession是通过SqlSessionFactory生产

Spring学习记录(二)---容器和属性配置

下载spring包,在eclipse搭建spring环境. 这步我在eclipse中无法导入包,看网上的: http://sishuok.(和谐)com/forum/blogPost/list/2428.html 建一个java project 三个java文件,一个xml文件 1 package com.guigu.spring.beans; 2 3 public class HelloWord { 4 private String name; 5 public String getName(

Tornado学习记录二

Coroutines Coroutines are the recommended way to write asynchronous code in Tornado. Coroutines use the Python yield keyword to suspend and resume execution instead of a chain of callbacks (cooperative lightweight threads as seen in frameworks like g

python学习记录二

一.列表(习惯了OC,总想把它叫成数组): names = ["ZhangYang","GuYun","XiangPeng","CuLiangChen"] names.append("LeiHaiDong")#添加names.insert(1,"ChenRongHua")#插入names[2] = "XieDi"#修改#删除names.remove("Che

Maven学习记录(二)--Maven核心概念

转载自 http://www.cnblogs.com/xdp-gacl/p/4051819.html 博主写的很好,所以直接转载过来了 一.Maven坐标 1.1.什么是坐标? 在平面几何中坐标(x,y)可以标识平面中唯一的一点. 1.2.Maven坐标主要组成 groupId:组织标识(包名) artifactId:项目名称 version:项目的当前版本 packaging:项目的打包方式,最为常见的jar和war两种 样例: 1.3.Maven为什么使用坐标? Maven世界拥有大量构建,

webrtc学习———记录二:canvas学习

参考资料: http://bucephalus.org/text/CanvasHandbook/CanvasHandbook.html#getcontext2d https://developer.mozilla.org/zh-CN/docs/Web/HTML/Canvas http://www.w3school.com.cn/html5/html5_canvas.asp https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLCanvasEle

React 学习记录(二)

JSX语法 jsx是应React的出现而出现的,由js和xml结合而成,遇"<"解析xml,遇"{"解析js,利用js来虚拟DOM,利用虚拟DOM Diff算法可以让用户毫无顾及的刷新页面. 一.JSX注意要点 1.组件的首字母必须用大写,并且必须封闭,如:<Demo />或<Demo></Demo>: 2.已经构建好的组件内部无法使用if-else-语法,所以总结下来有两种if-else-的实现方式: 2.1 改变组件的属