一:在php中,用class关键字来创建一个类,即进行封装;在类里面有成员属性和方法行为组成:

1.成员属性:用关键字var来声明,可以给初始值也可以不给;现在var废弃,用public来声明,public为共有属性,在任何地方都可以访问

 /*名称*/
public $name = "房明";
/*学号*/
public $no;
/*成绩*/
public $score;

  

2.行为方法:和js中的函数类似,一般用public来声明

 /*唱歌*/
public function sing($songName)
{
echo "学生会唱{$songName}歌";
} /*跑步*/
public function run()
{
return "学生去跑步了";
}

  

特别注意:在类里面调用自己的属性和方法的时候,用到"$this->..."

 public function showSelf(){
echo "我叫{$this->name},我的学号是{$this->no},我考了{$this->score}分,{$this->run()}";
}

  

二:new关键字实例化对象

要想操作类里面的属性和方法,必须要实例化一个对象;

每一个对象都是独立的,通过对象改变属性只能改变自己内存空间的数据,互不影响;

通过"->"来访问类里面的属性和方法,类似于c中的指针,通过"="进行赋值;

$student1 = new Student1(); //创建内存空间,然后把地址传递给对象
$student1->name = "张三"; //通过"->"来访问类里面的属性和方法,类似于c中的指针,通过"="进行赋值
$student1->no = "1001";
$student1->score = "100";
$student1->showSelf();

  

三:引用外部类:

引用外部类:include,required;前者在错误时会出现一个警告,后者会出现一个致命的错误

在不确定外部类是不是用了一次的情况下,为了避免出现冲突,可以用include_once或者required_once

代码:我单独建了一个Student类,页面代码如下:

class Student
{
public $name;
public $age;
}

  然后我想在main页面用这个类,那么在main页面需要的代码如下:

include_once "Student.class.php";
$student = new Student();

  

四:构造函数和解析函数

构造函数:__construct()初始化参数,当实例化类的时候会调用这个函数,属于魔术方法,前面是两个下划线;

析构函数:__destruct(),当内存被回收的时候调用这个函数;

代码:

class Student
{
public $name;
public $age;
/*************构造函数:__construct()初始化参数******************/
public function __construct($name,$age){
$this->name = $name;
$this->age = $age;
}
public function show(){
echo $this->name."今年".$this->age."岁了";
} /************析构函数:******************/
public function __destruct()
{
echo $this->name."内存被回收";
}
}
$student = new Student("房明","18");
$student->show(); //此时打印的结果为:房明今年18岁了

  

php学习八:封装的更多相关文章

  1. Python Tutorial 学习(八)--Errors and Exceptions

    Python Tutorial 学习(八)--Errors and Exceptions恢复 Errors and Exceptions 错误与异常 此前,我们还没有开始着眼于错误信息.不过如果你是一 ...

  2. SVG 学习<八> SVG的路径——path(2)贝塞尔曲线命令、光滑贝塞尔曲线命令

    目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...

  3. Canvas学习:封装Canvas绘制基本图形API

    Canvas学习:封装Canvas绘制基本图形API Canvas Canvas学习   从前面的文章中我们了解到,通过Canvas中的CanvasRenderingContext2D对象中的属性和方 ...

  4. C#学习笔记-封装

    前言 说起来惭愧,学了大半年的C#,其实最开始就接触到了封装的部分,但是一直模模糊糊的弄不清楚,也觉得没什么影响就没怎么在意,现在才开始认真的看这部分内容,看懂了过后好多东西清晰了不少,才发现封装这个 ...

  5. Java编程思想学习(八) 内部类

    可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类的定义是简单的,但是它的语法确实很是复杂,让人不是很好理解.下面就内部类做一个小结. 一.内部类的分类 总的来讲内部类分为普通内部类,匿 ...

  6. boost asio 学习(八) 网络基础 二进制写发送和接收

    http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting- started-with-boostasio?pg=9 8. Net ...

  7. MVC学习八:MVC View提交数据

    学习编程最主要的就是数据交互,MVC中数据交互是怎么样的呢? 1.Controller向View传输数据在http://www.cnblogs.com/WarBlog/p/7127574.html中有 ...

  8. 侯捷STL学习(八)-- 深度探索deque

    layout: post title: 侯捷STL学习(八) date: 2017-07-19 tag: 侯捷STL --- 第十八节 深度探索deque上 duque内存结构 分段连续,用户看起来是 ...

  9. 【C语言学习】封装和模块化思想

    刚学习完C后,做的关于C的课程设计是在一个源文件里放了几百行代码,并且各个功能之间都是相互依赖的,这样就会非常麻烦. 由于当我要改动某个地方的时候,就会牵连着要改动喝多的地方.而在实际的程序设计中.这 ...

随机推荐

  1. plot sin 03-数据区域边界线的位置

    plot sin 03 数据区域边界线的位置 Code #!/usr/bin/env python # -*- coding: utf-8 -*- import numpy as np import ...

  2. 实现qsort(和qsort差一个数量级啊,伤自尊了)

    #include <cstdio> #include <cstdint> #include <ctime> #include <cstring> #in ...

  3. wso2as安装

    1.系统环境 Ubuntu12.04    192.168.0.97    root/password找管理员 Ubuntu12.04    192.168.0.99    root/password ...

  4. div绝对定位针对手机浏览器的区别

    最近在对ipad和安卓平板做测试,发现我自己写的一个下拉控件在安卓浏览器里面被遮盖了,但是PC或者ipad都没有这个现象,一开始以为是z-index 可是无论我调多少都没有用,研究了好久,发现是代码的 ...

  5. namp命令详解

    我将用两个不同的部分来涵盖大部分NMAP的使用方法,这是nmap关键的第一部分.在下面的设置中,我使用两台已关闭防火墙的服务器来测试Nmap命令的工作情况. 192.168.0.100 – serve ...

  6. Winform控件:保存文件对话框(SaveFileDialog)

    SaveFileDialog用于保存文件 1.新建Winform窗体应用程序,命名为SaveFileDialogDemo. 2.在界面上添加一个按钮的控件(用于打开保存文件对话框),添加文本控件,用于 ...

  7. 本地Git仓库和远程仓库的创建及关联

    新建一个远程的仓库(空的) 新建一个远程仓库 设置远程仓库的名字,并创建 设置仓库名 切记:如果我们在创建远程仓库的时候添加了README和.ignore等文件,我们在后面关联仓库后,需要先执行pul ...

  8. Maven中央仓库——你可能不知道的细节

    地址 —— 目前来说,http://repo1.maven.org/maven2/是真正的Maven中央仓库的地址,该地址内置在Maven的源码中,其它地址包括著名的ibiblio.org,都是镜像. ...

  9. css -- 背景图片自适应屏幕大小

    由于<body>标签的图片不能够拉伸, 解决办法: 1.图片不够大,又background属性不能拉伸图片: 2.只能用个div,把其z-index值设为负,并使这个div大小为整个bod ...

  10. 转载:mysql 操作总结 INSERT和REPLACE

    转自:http://www.jb51.net/article/19411.htm   用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新语句,也叫做 ...