php之类,对象(四)加载类及练习题
一、加载类:
1.命名类文件的时候每个单词首字母大写,后面缀上.class.php
eg: Info.class.php
在写编码时定义类名首字母大写,定义变量名小写
eg:class Ren
{
public $name;
public $sex;
}
2.加载类:
2.1 如何找到类的文件
//当前目录:./
//上级目录:../
//下级目录:目录名/
//根目录:/
//如果实在php代码里面/代表本地磁盘的跟
//如果是在html里面/代表当前站点目录
include("../Info.class.php");//将文件加载到页面,参数是一个路径(能找到类文件)
include "/Appserve/www/Info.class.php";
require_once "./Info.class.php";//请求目标文件一次
require_once ("./Info.class.php");
require("Info.class.php");
require "Info.class.php";
2.2自动加载类:
function __autoload($classname) //括号里是类名
{
include ($classname.".class.php");
}
要求:1.所有类的命名规则要一样 2.所有的类要在同一个文件夹下 3.类的命名最好和文件名一致
附:一般不太用这个方法
二、例子:
1.求大圆和小圆的中间阴影面积:
//面向过程:
$r1=10;
$r2=5;
$mj=$r1*$r1*3.14-$r2*$r2*3.14;
echo $mj;
//面向对象:
(1.)新建一个php文件,命名为 Yuan.class.php
class Yuan
{
public $r;
function __construct($r)
{
$this->r=$r;
}
functin MianJi()
{
return $this->r*$this->r*3.14;
}
}
(2.)源代码:
include ("Yuan.class.php");
//include "Yuan.class.php";
//require_once ("Yuan.class.php");
//require_once "Yuan.class.php";
//require "Yuan.class.php";
//require ("Yuan.class.php");
$y1=new Yuan(10);
$y2=new Yuan(5);
echo $y1->MianincluJi()-$y2->MianJi();
2.用面向对象的方法把一张Info表的数据显示在页面上
//显示数据:
附:将表和要显示的数据联系起来时,
//表和类对应:表名是类名,列名是类里面的成员
//表里面的每一条数据对应的是类实例化的对象
做法:
1.新建一个文件,做一个Info表的类,表名为Info.class.php,里面是纯php代码
<?php
//Info表的实体类
class Info
{
public $code;
public $name;
public $sex;
public $nation;
public $birtday;
}
2.在源代码中引用这个类:
include "Info.class.php";
//开始制作Info表内的数据:
$arr=array();
$info1=new Info();
$info1->code="p001";
$info1->name="张三";
$info1->sex="男";
$info1->nation="汉族";
$info1->birthday="1977-03-13";
//往数组里面追加元素,把对象放到数组里用array_push()
array_push($arr,$info1);
$info2=new Info();
$info2->code="p002";
$info2->name="李四";
$info2->sex="女";
$info2->nation="回族";
$info2->birthday="1988-03-13";
array_push($arr,$info2);
$info3=new Info();
$info3->code="p003";
$info3->name="王武";
$info3->sex="男";
$info3->nation="苗族";
$info3->birthday="1983-03-13";
array_push($arr,$info3);
echo "<table border='1' width='100%' cellpadding='0' cellspacing='0'>";
echo "<tr><td>代号</td><td>姓名</td><td>性别</td><td>民族</td><td>生日</td></tr>";
foreach ($arr as $value)
{
echo "<tr>
<td>{$value->code}</td>
<td>{$value->name}</td>
<td>{$value->sex}</td>
<td>{$value->nation}</td>
<td>{$value->birthday}</td>
</tr>";
}
echo "</table>";
3. 做一个游戏Hero
<1.>新建一个Hero的php文件,命名为Hero.class.php
class Hero
{
public $name;
public $blood;
public $attact;
public $experience;
public $level;
public $money;
public $skill= array();
//构造函数,对成员进行初始化
function __construct($n)
{
$this->name = $n;
$this->blood = 100;
$this->attact = 10;
$this->experience=0;
$this->level=1;
$this->money = 100;
}
//打怪函数
function DaGuai()
{
//杀死怪物随机获取一个数值并取整数
$sj = floor(rand(0,100));
if($sj>30) //随机获取数值大于30增加经验值
{
//获取经验
$exp= floor(rand(0,40));
//将该英雄经验增加
$this->experience = $this->experience+$exp;
//判断是否要升级
if($this->experience>=50)
{
$this->level +=1;
$this->experience= 0;
$this->blood += 20;
$this->attact +=5;
}
echo $this->name."杀死了一个怪物,获得了{$exp}点经验<br>";
}
else
{
if($this->level==1)
{
}
else
{
$this->level -=1;
}
echo "你被怪物打死了<br>";
}
}
//查看英雄信息
function Show()
{
echo "英雄名称:{$this->name}<br>";
echo "英雄血量:{$this->blood}<br>";
echo "英雄攻击:{$this->attact}<br>";
echo "英雄经验:{$this->experience}<br>";
echo "英雄等级:{$this->level}<br>";
echo "技能为:";
foreach($this->skill as $v)
{
echo $v."!";
}
}
//学习技能
function XueXi()
{
//花钱
$hf = floor(rand(0,20));
$n = floor(rand(0,5)); //5种技能随机学习
//技能库里面选技能
switch($n)
{
case 1:
array_push($this->skill,"冲锋");
break;
case 2:
array_push($this->skill,"嘲讽");
break;
case 3:
array_push($this->skill,"致死打击");
break;
case 4:
array_push($this->skill,"盾墙");
break;
case 5:
array_push($this->skill,"沉默");
break;
}
}
}
<2.>源代码:
include("Hero.class.php");
$hero = new Hero("武松"); //创建英雄
$hero->DaGuai();
$hero->XueXi();
$hero->Show();
php之类,对象(四)加载类及练习题的更多相关文章
- python 动态加载类对象
第一步 加载模块 module =__import__("modulename",fromlist=['']) 第二部 加载类对象 cls = getattr(module, & ...
- Html飞机大战(四):状态的切换(界面加载类的编辑)
好家伙,接着写 既然我们涉及到状态了,那么我们也会涉及到状态的切换 那么我们怎样切换状态呢? 想象一下,如果我玩的游戏暂停了,那么我们肯定是通过点击或者按下某个按键来让游戏继续 这里我们选 ...
- 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间
[源码下载] 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 作者:webabcd 介绍速战速决 之 PHP 动态地创 ...
- JVM总结-虚拟机加载类
从 class 文件到内存中的类,按先后顺序需要经过加载.链接以及初始化三大步骤.其中,链接过程中同样需要验证:而内存中的类没有经过初始化,同样不能使用.那么,是否所有的 Java 类都需要经过这几步 ...
- JVM学习(二)JVM加载类
一.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构 ...
- 10月27日PHP加载类、设计模式(单例模式和工厂模式)、面向对象的六大原则
加载类可以使用include.require.require_once三种中的任意一种,每个关键字都有两种方法,但是这种方法的缺点是需要加载多少个php文件,就要写多少个加载类的方法.一般也就需要加载 ...
- JVM加载类的过程,双亲委派机制中的方法
JVM加载类的过程: 1)JVM中类的整个生命周期: 加载=>验证=>准备=>解析=>初始化=>使用=>卸载 1.1.加载 类的加载阶段,主要是获取定义此类的二进 ...
- 关于实现Extjs动态加载类的方式实现
Extjs4以前的版本没有动态加载类的方式,这样开发程序的时候加载很多的js会导致加载变慢,由于本人一直使用extjs3的版本进行开发,于是简单实现了一个动态加载类的管理器,使用方式与extjs4的方 ...
- [javaSE] 反射-动态加载类
Class.forName(“类的全称”) ①不仅表示了类的类类型,还代表了动态加载类 ②请大家区分编译,运行 ③编译时刻加载类是静态加载类,运行时刻加载类是动态加载类 Ⅰ所有的new对象都是静态加载 ...
随机推荐
- Android中layout_weight的属性理解
https://www.zybuluo.com/zzudhj/note/102067 在Android开发过程中,在编写布局文件经常会用layout_weight属性:从字面意思上看权重.比值.按比例 ...
- android上传图片至服务器
本实例实现了android上传手机图片至服务器,服务器进行保存 服务器servlet代码publicvoid doPost(HttpServletRequest request, HttpServle ...
- 18个SaaS及其功能评价
SAAS软件及其功能评价1. 360 两个同步功能都不错,却被埋没了2. 够快云3. DBFen4. Seafile5. 坚果云6. DZ7. 百度云8. 1159. 迷你云10. 微云11. Dro ...
- ASP.NET MVC – 关于Action返回结果类型的事儿(上)
原文:ASP.NET MVC – 关于Action返回结果类型的事儿(上) 本文转自:博客园-文超的技术博客 一. ASP.NET MVC 1.0 Result 几何? Action的 ...
- DLL模块例1:使用.def模块导出函数,规范修饰名称,显示连接调用dll中函数
以下内容,我看了多篇文章,整合在一起,写的一个例子,关于dll工程的创建,请参考博客里另一篇文章:http://www.cnblogs.com/pingge/articles/3153571.html ...
- 《SDN核心技术剖析和实战指南》2.1交换机核心技术小结
对于SDN交换机的技术,其实也适用于传统的交换机,只不过控制部分被分离出来而已.传统交换机的控制面主要是转发表的管理以及网络状态之类的各种表,现在这些都由控制器来担心.转发面主要由转发决策.背板和输出 ...
- java泛型编程
一般的类和方法都是针对特定数据类型的,当写一个对多种数据类型都适用的类和方法时就需要使用泛型编程,java的泛型编程类似于C++中的模板,即一种参数化类型的编程方法,具体地说就是将和数据类型相关的信息 ...
- Hive和HBase的区别
一.两者分别是什么: Apache Hive是一个构建在Hadoop基础设施之上的数据仓库.通过Hive可以使用HQL语言查询存放在HDFS上的数据.HQL是一种类SQL语言,这种语言最终被转 ...
- StoryBoard 设置TabBar SelectImage 和tintColor
如图:StoryBoard 结构是 Tabbar + Navi + ViewController 需求:需要修改TabBar的Image 和SelectImage 设置Image 设置SelectIm ...
- 《Programming Massively Parallel Processors》Chapter5 习题解答
自己做的部分习题解答,因为时间关系,有些马虎,也不全面,欢迎探讨或指出错误 5.1 Consider the matrixaddition in Exercise 3.1. Can one use s ...