码迷,mamicode.com
首页 > 其他好文 > 详细

4月29 加载类以及面向对象的例题

时间:2016-05-04 21:11:01      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

加载类:
从现在养成的习惯以后写类名时:每个单词的首字母的大写,这样的命名方法叫做驼峰法,eg:Info.class.php 这样很快可以看清楚就是一个Info的类

在php代码里面,/代表本地磁盘的根,(该文件所在的应聘)
在html代码里面,/代表的是当前的站点目录(这里是www目录)

加载类的方法:
将文件名加载到页面,最好是在同一个路径下,参数是一个路径(能够找到类文件)

include("Info.class.php"); //直接写文件名的加载
include "Info.class.php";

require_once("./Info.class.php"); //请求目标页面加载一次
require_once "./Info.class.php";

require("Info.class.php");
require "Info.class.php";

以上是加载的六种方法,每种都是可以的;但是也有稍稍的区别:include,如果有重大错误时加载不执行下面的任何内容,而require_once是可以执行的

自动加载类:
function __autoload($classname)//参数的名是类名
{
include("../".$classname.".class.php");在造对象的时候自动执行
}
自动加载要求的会比较苛刻,一般会不提倡使用的:
要求:所有的类都要有同样的命名规则,所有的内容都要写在同一个文件名下,参数名必须要与类名统一


当前目录:./或是直接写
上级目录:../
下级目录:目录名/
根目录:/


不在同一文件名下的加载:举例
include "AppServ/www.test0429/Info.class.php";

在html中加载一个同一文件夹下的图片
<img src="/test0429/1.jpg"/>
不在同一级的文件加载
<img src="../2.jpg"/>

针对面向过程和面相对象的例题应用求大圆与小圆面积之差

面向过程

<?php
           $r1=10;
           $r2=5;
           $mj=$r1*$r1*3.14 - $r2*$r2*3.14;
           echo  $mj;
?>

 


面向对象

首先是造类,写在不同页面需要加载

<?php
       class Yuan
 {
    public $r;  //圆半径
    function __construct($r)  //构造方法来初始化半径
    {
            $this->r=$r;
    }
    function MianJi()
    {
        return $this->r*$this->r*3.14;  //返回圆的面积
    }
    function ZhouChang()
    {
        return $this->r*2*3.14;  //返回圆的周长
    }          
 }
  $y1=new Yuan(10);
  $y2=new Yuan(5);
  echo $y1->MianJi() - $y2->MianJi();  //利用方法求圆的面积之差
  echo $y1->ZhouChang() - $y2->ZhouChang();  //求周长之差

?>

关于面向对象的练习题

因为牵扯到劳动节放假回家,剩下的自己晓得了吧!自己动手做了以下感觉还好。

 

显示数据

表和类对应:表名是类名,列名是类里面的成员

表里面的每一条数据对应是类实例化的对象

<?php
  class Info
{
    public $code;
    public $name;
    public $sex;
    public $nation;
    public $birthday;     
}

include("Info.class.php");//类的加载
   
   $attr=array();
   
   $info1 = new Info();
   $info1->code ="p001";
   $info1->name ="张三";
   $info1->sex ="男";
   $info1->nation ="汉族";
   $info1->birthday ="1988-2-13";
//往里面追加元素
   array_push($attr,$info1);


  $info2 = new Info();
  $info2->code ="p002";
  $info2->name ="李四";
  $info2->sex ="女";
  $info2->nation ="汉族";
  $info2->birthday ="1989-2-3";
  array_push($attr,$info2);
  
  $info3 = new Info();
  $info3->code ="p003";
  $info3->name ="王五";
  $info3->sex ="男";
  $info3->nation ="回族";
  $info3->birthday ="1990-2-3";
  array_push($attr,$info3);
  
  echo "<table width=‘100%‘ border=‘1px‘ cellpadding=‘0‘ cellspacing=‘0‘>";
  echo "<tr><td>Code</td><td>Name</td><td>Sex</td><td>Nation</td><td>Birthday</td></tr>";
 
 foreach($attr 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>";
?>

用for的遍历一样可以实现,相对来讲较为麻烦

for($i=0;$i<count($attr);$i++)
{
    echo "<tr><td>{$attr[$i]->code}</td><td>{$attr[$i]->name}</td><td>{$attr[$i]->sex}</td><td>{$attr[$i]->nation}</td><td>{$attr[$i]->birthday}</td></tr>";
}

另一个是关于游戏的题目:

先做了一个类,类名是:game.class.php 代码部分如下:是一个纯的php页面所有后面可以不加 ?>

<?php

class Hero
{
    public $blood;
    public $gongji;
    public $jingyan;
    public $level;
    public $name;
    public $money;
    public $jineng = array();
    
    //构造函数,对成员进行初始化
    function __construct($n)
    {
        $this->blood = 100;
        $this->gongji = 10;
        $this->jingyan = 0;
        $this->level = 1;
        $this->money = 100;
        $this->name = $n;                
    }
    //打怪函数
    function DaGuai()
    {
        //随机
        $sj = floor(rand(0,100));
        if($sj>30)
        {
            //获取经验
            $jy = floor(rand(0,40));//floor取整函数
            //将该英雄的经验增加
            $this->jingyan = $this->jingyan+$jy;
            //判断是否要升级
            if($this->jingyan>=50)
            {
                $this->level +=1;
                $this->jingyan = 0;//经验清零
                $this->gongji +=5;
                $this->blood +=20;    
            }    
            echo $this->name."杀死了一个怪物,获得了{$jy}点经验 ";
        }
        else
        {
            if($this->level==1)
            {
                    
            }
            else
            {
                $this->level -=1;
            }
            echo "你被怪物打死了";    
        }
    }
    //查看英雄信息
    function Show()
    {
        echo "英雄的姓名:{$this->name}<br>";        
        echo "英雄的血量:{$this->blood}<br>";    
        echo "英雄的攻击:{$this->gongji}<br>";    
        echo "英雄的经验:{$this->jingyan}<br>";    
        echo "英雄的等级:{$this->level}<br>";    
        echo "技能为:";
        foreach($this->jineng as $v)
        {
            echo $v.",";
        }    
    }
    //学习技能
    function XueXi()
    {
        //花钱
        $hf = floor(rand(0,20));
        $n = floor(rand(0,5));
        //技能库里面选技能
        switch($n)
        {
                 case 0:
                 array_push($this->jineng,"冲锋");
                 break;    
                 case 1:
                 array_push($this->jineng,"嘲讽");
                 break;    
                 case 2:
                 array_push($this->jineng,"致死打击");
                 break;    
                 case 3:
                 array_push($this->jineng,"盾墙");
                 break;    
                 case 4:
                 array_push($this->jineng,"沉默");
                 break;                    
        }    
    }    
}

 然后将做的类加载到一个新的文件名下game.php

造一个新的对象然后进行游戏(实例化对象)

<?php
include("game.class.php");//加载类

$hero = new Hero("张三");//创建英雄

/*$hero->DaGuai();
$hero->Show();

$hero->DaGuai();
$hero->Show();

$hero->DaGuai();
$hero->Show();

$hero->DaGuai();
$hero->Show();

$hero->DaGuai();
$hero->Show();
*/ $hero->XueXi(); $hero->Show(); $hero->XueXi(); $hero->Show(); ?>

 

4月29 加载类以及面向对象的例题

标签:

原文地址:http://www.cnblogs.com/Duriyya/p/5459676.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!