(转)一步一步学习PHP(5)——类和对象
OO的强大我不想再多说,如果你不认同OO,那么当你放眼当前流行的语言,有哪个又不支持OO的,也许这个很有说服力了吧。
在这一节中,我们就来看看在PHP中如何创建一个类和对象。
1. 创建类
在PHP中,创建一个类和在C#/Java中基本类似,闲话少说,给大家看个最简单的例子:
<?php
class People
{
var $name;
public function GetName()
{
return $this->name;
}
public function SetName($name)
{
$this->name=$name;
}
} $p=new People();
$p->SetName("kym");
echo($p->GetName());
?>
这里,我们就创建一个People的类,在这里有四个要点说明一下:
第一个是在PHP中,访问属性(或者方法)不是用我们所常用的点运算符(.),而是用->。
第二个是在PHP中,方法需要用function在标识,这点于Javascript很类似。
第三点是当我们声明一个变量时,需要用var,这点也与Javascript非常类似。
第四点是在PHP中,也有着public ,protected,private三个与C#同样的访问修饰符,不再赘述。
在这里,我们发现,我们可以用$p直接访问$name属性,那么我们需要对其进行控制,方法如下:
class People
{
private $name;
public function GetName()
{
return $this->name;
}
public function SetName($name)
{
$this->name=$name;
}
}
这时,我们在外界就无法访问到$name属性了。
还记得我们在上文中提到了可变函数么?在这里我们一样可以用可变函数来访问对象的方法:
<?php
class People
{
private $name;
public function GetName()
{
return $this->name;
}
public function SetName($name)
{
$this->name=$name;
}
} $p=new People();
$get="GetName";
$set="SetName";
$p->$set("kym");
echo($p->$get());
?>
2. 静态方法(属性)
在PHP中声明静态方法(也可称之为类方法)与C#中是十分类似的。
<?php
class DataBase
{
public static function CreateConnection()
{
echo("Success");
}
}
DataBase::CreateConnection();
?>
同理,声明静态属性也是一样。
<?php
class DataBase
{
static $connectionString="http://127.0.0.1";
public static function CreateConnection()
{
echo("Success");
}
}
echo(DataBase::$connectionString);
DataBase::CreateConnection();
?>
3. 类常量
在C#中,我们用const来标识常量,在PHP中也是一样。
<?php
class DataBase
{
const AUTHOR="kym";
static $connectionString="http://127.0.0.1";
public static function CreateConnection()
{
echo("Success");
}
}
echo(DataBase::AUTHOR);
echo(DataBase::$connectionString);
DataBase::CreateConnection();
?>
4. 访问静态变量
我们知道,静态属性(方法)属于类本身,而变量(方法)属于对象本身,而类本身先于对象而存在,那么我们如何来在动态方法中访问静态的变量(方法)呢?在PHP中,为我们提供了self关键字。
<?php
class DataBase
{
const AUTHOR="kym";
static $connectionString="http://127.0.0.1";
public static function CreateConnection()
{
echo(self::$connectionString." Success");
}
}
echo(DataBase::AUTHOR);
echo(DataBase::$connectionString);
DataBase::CreateConnection();
?>
(转)一步一步学习PHP(5)——类和对象的更多相关文章
- Java学习笔记之---类和对象
Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态 例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { Stri ...
- java学习(2):类和对象
一.类 类可以看成是创建对象的模板,它描述一类对象的行为和状态.创建对象也叫类的实例化.类必须先定义才能使用. 通过下面一个简单的类来理解下Java中类的定义: public class Dog { ...
- 学习笔记——Java类和对象
今天学习了Java的类和对象的相关知识,由于Java面向对象的编程的思想和C++几乎一样,所以需要更多的关注Java的一些不同之处. 1.类 1.1 在类这一块,除了基本的成员变量,成员方法,构造函数 ...
- 【Python学习之七】类和对象
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 python3.6 一.面向对象编程1.概念(1)面向对象编程(OOP ...
- 1.2(java学习笔记)类与对象
对象:是指具体的事物.比如学生 张三,老师 李四,代表一个单一的个体. 比如 学生 张三,这时张三就是具体的对象. 类:将对象中共有特征抽象出,可以理解为某种特性的集合. 世界上的事物可以分解成一 ...
- Java学习笔记 04 类和对象
一.类和对象的概念 类 >>具有相同属性和行为的一类实体 对象 >>实物存在的实体.通常会将对象划分为两个部分,即静态部分和动态部分.静态部分指的是不能动的部分,被称为属性,任 ...
- Java学习第二篇:类,对象,成员属性,成员方法,构造方法,类变量,类方法
一.类的定义 一个全面的类定义是比较复杂的, 定义如下:
- php学习小记2 类与对象
php类的一些特性: 1. 伪变量$this.$this是一个到主叫对象的引用.取值:该方法所从属的对象,可能是另外的对象(前提,当该方法被静态调用时).$this变量存在于一个类的非静态方法中,在静 ...
- Python学习笔记008_类_对象_继承_组合_类相关的BIF
# 对象 = 属性 + 方法>>> # Python中的类名约定以大写字母开始>>> # tt = Turtle() 这就是创建类实例的方法,其它语言用new ,它 ...
随机推荐
- BZOJ 1049 数字序列
Description 现在我们有一个长度为n的整数序列A.但是它太不好看了,于是我们希望把它变成一个单调严格上升的序列.但是不希望改变过多的数,也不希望改变的幅度太大. Input 第一行包含一个数 ...
- BZOJ 3106 棋盘游戏
Description 一个\(n \times n(n \le 2)\)棋盘上有黑白棋子各一枚.游戏者A和B轮流移动棋子,A先走. A的移动规则:只能移动白棋子.可以往上下左右四个方向之一移动一格. ...
- ioc开发学习 --简易计时器 (基于iPhone5屏幕尺寸开发)
超简单的秒表:包含:开始.暂停(不清零).清零 方法 核心代码 // // ViewController.m // MiaoBiao // // Created by Ibokan on 15/8/1 ...
- WIN版的Jenkins Master加入LINUX的SLAVE节点,并作C++程序的集成交付
这次深撸了一下JENKINS的配置,不敢说完全通了. 但对于整个体系,有了更新认识. 将LINUX作为SLAVE节点加入WIN的JENKINS里,网上有很多教程,依作即可. 在将相关任务分配给这个节点 ...
- JVM上的随机数与熵池策略
在apache-tomcat官方文档:如何让tomcat启动更快里面提到了一些启动时的优化项,其中一项是关于随机数生成时,采用的“熵源”(entropy source)的策略. 他提到tomcat7的 ...
- 14.5.3 Locks Set by Different SQL Statements in InnoDB
14.5.3 Locks Set by Different SQL Statements in InnoDB 通过不同的SQL语句设置的锁 在InnoDB中 一个锁定读, 一个UPDATE 或者一个D ...
- C参数计算
C‘计算参数时,从右向左压栈的 int a[]={1,3,4}; int * ptr=a; pirntf("%d,%d\n",*ptr,*(++ptr)); 输出都是3:
- 线段树(维护最大值):HDU Billboard
Billboard Time Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- HDOJ(HDU) 2212 DFS(阶乘相关、)
Problem Description A DFS(digital factorial sum) number is found by summing the factorial of every d ...
- Chrome DevTools学习笔记
---恢复内容开始--- chrome和firefox的开发者工具大同小异,都非常强大.今天在博客园上看了这篇文章(http://www.cnblogs.com/Wayou/p/chrome-cons ...