一、加载类:
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之类,对象(四)加载类及练习题的更多相关文章

  1. python 动态加载类对象

    第一步 加载模块 module  =__import__("modulename",fromlist=['']) 第二部 加载类对象 cls = getattr(module, & ...

  2. Html飞机大战(四):状态的切换(界面加载类的编辑)

    好家伙,接着写   既然我们涉及到状态了,那么我们也会涉及到状态的切换   那么我们怎样切换状态呢? 想象一下,如果我玩的游戏暂停了,那么我们肯定是通过点击或者按下某个按键来让游戏继续   这里我们选 ...

  3. 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间

    [源码下载] 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 作者:webabcd 介绍速战速决 之 PHP 动态地创 ...

  4. JVM总结-虚拟机加载类

    从 class 文件到内存中的类,按先后顺序需要经过加载.链接以及初始化三大步骤.其中,链接过程中同样需要验证:而内存中的类没有经过初始化,同样不能使用.那么,是否所有的 Java 类都需要经过这几步 ...

  5. JVM学习(二)JVM加载类

    一.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构 ...

  6. 10月27日PHP加载类、设计模式(单例模式和工厂模式)、面向对象的六大原则

    加载类可以使用include.require.require_once三种中的任意一种,每个关键字都有两种方法,但是这种方法的缺点是需要加载多少个php文件,就要写多少个加载类的方法.一般也就需要加载 ...

  7. JVM加载类的过程,双亲委派机制中的方法

    JVM加载类的过程: 1)JVM中类的整个生命周期: 加载=>验证=>准备=>解析=>初始化=>使用=>卸载  1.1.加载 类的加载阶段,主要是获取定义此类的二进 ...

  8. 关于实现Extjs动态加载类的方式实现

    Extjs4以前的版本没有动态加载类的方式,这样开发程序的时候加载很多的js会导致加载变慢,由于本人一直使用extjs3的版本进行开发,于是简单实现了一个动态加载类的管理器,使用方式与extjs4的方 ...

  9. [javaSE] 反射-动态加载类

    Class.forName(“类的全称”) ①不仅表示了类的类类型,还代表了动态加载类 ②请大家区分编译,运行 ③编译时刻加载类是静态加载类,运行时刻加载类是动态加载类 Ⅰ所有的new对象都是静态加载 ...

随机推荐

  1. MATLAB 常用形态学操作函数

    常用形态学操作函数(转自:http://blog.sina.com.cn/s/blog_4c52e9e20100e5if.html) 1.dilate函数 该函数能够实现二值图像的膨胀操作,有以下形式 ...

  2. css、js的相互阻塞

    先决条件:脚本前面存在外部样式 以下试验虽然是在chrome下,但是对于IE8+以及其他浏览器也适用. 1.内联脚本(http://jsbin.com/mudab/1) <!DOCTYPE ht ...

  3. Java 单例总结

    1:懒汉式,不保证线程安全 package com.yan.singleton; public class LazySingleton { private static final LazySingl ...

  4. Eclipse Android源代码新下载方法及关联

    一.下载Android源代码 Android源代码从4.0后就可以使用SDK Manager进行下载,打开SDK Manager就可以看到,已4.4为例: 关联Android源代码 但是老是提示下载失 ...

  5. BZOJ2091: [Poi2010]The Minima Game

    2091: [Poi2010]The Minima Game Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 243  Solved: 163[Subm ...

  6. sdl2.0示例

    // gcc -o testDrone2_video testDrone2_video.c -lavcodec -lavformat -lswscale -lSDL2// g++ -o testDro ...

  7. HDU-1176(基础方程DP)

    Problem Description 都 说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉, 就掉落在他 ...

  8. [深入React] 6.组件

    组件是react的大杀器,超出其他框架几百里 react 组件和dom一样也是树状结构,只能由上而下传递变量(或者调用),不可以兄弟间或者更远的发生关系,为的就是简单,而且工作的很好. 每个组件有自己 ...

  9. 【C#正则基础】正则表达式

    1. 代表任意多个字符:(.*?)2. 代表网页里的<body>*</body>任意的标签内容,替换以后网页源码就只剩纯文本:<[^>]*>3. 代表网页中的 ...

  10. [转]Android重力感应开发

    http://blog.csdn.net/mad1989/article/details/20848181 一.手机中常用的传感器 在Android2.3 gingerbread系统中,google提 ...