`
dasangshu
  • 浏览: 4510 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

php接口

阅读更多
我们设计一个在线销售系统,用户部分设计如下:

将用户分为,NormalUser, VipUser, InnerUser三种。

要求根据用户的不同折扣计算用户购买产品的价格。

并要求为以后扩展和维护预留空间。

用户部分先声明了一个接口User,用户都是User的实现。

User.php
<?
/*
* 定义了 User接口.
* 和子类 NormalUser,VipUser,InnerUser 
*/
//User接口,定义了三个抽象方法.
interface User{
	public function getName();
	public function setName($_name);
	public function getDiscount();
}
abstract class AbstractUser implements User{
	private $name = ""; //名字
	protected  $discount = 0; //折扣
	protected  $grade = "";  //级别
	
	public function __construct($_name){
		$this->setName($_name);
	}
	public function getName(){
		return $this->name;
	}
	public function setName($_name){
		$this->name = $_name;
	}
	public function getDiscount(){
		return $this->discount;
	}
	
	public function getGrade(){
		return $this->grade;
	}
}
class NormalUser extends AbstractUser  {	
	protected  $discount = 1.0;
	protected  $grade = "NormalUser";
}

class VipUser extends AbstractUser {
	protected  $discount = 0.8;
	protected  $grade = "VipUser";
}

class InnerUser extends AbstractUser {
	protected  $discount = 0.7;
	protected  $grade = "InnerUser";
}
?>

关于产品,我们进行了如下设计。

声明一个接口Product,然后从Product继承下Book接口。

在线销售的图书最后是实现了Book接口的BookOnline类。

Product.php
<?
/*与产品相关的类放.*/
Interface Product{ //定义产品接口
	public function getProductName();
	public function getProductPrice();
}

interface Book extends Product { // book是产品的一个分类
	public function getAuthor();
}

class BookOnline implements Book{ // 定义book类.
	private $productName;  // 产品名
	private $productPrice; // 产品价格
	private $author;  //作者
	
	public function __construct($_bookName){
		$this->productName = $_bookName;
		//这里放置相关初始化的代码.
		//与数据库关联的代码.
	}
	
	public function getProductName(){
		return $this->productName;
	}
	
	public function getProductPrice(){
		//这里从数据库读取价格.
		//假设价格是 100元.
		$this->productPrice = 100;
		return $this->productPrice;
	}
	
	public function getAuthor(){
		//从数据库里面取值.
		return $this->author;
	}	
}
?>

关于结算,我们使用了独立的结算类,使用静态方法做计算。产品结算。注意参数类型。

ProductSettle.php
<?
include_once("User.php");
include_once("Product.php");
//买了产品到底多少钱呢?
class ProductSettle{
	public static function  finalPrice(User $_user,Product $_product,$number = 1){
		$price = $_user->getDiscount() * $_product->getProductPrice() * $number;
		return $price;
	}
}
?>

下面的例子是实现。大家可以自己分析下。

<?
include_once("./class/User.php");
include_once("./class/Product.php");
include_once("./class/ProductSettle.php");

$number = 10;
$book = new BookOnline("设计模式");


$user = new NormalUser("Tom");
$price = ProductSettle::finalPrice($user,$book,$number);
$str =  "您好,尊敬的用户 " . $user->getName() . " <br>";
$str .= "您的级别是 ". $user->getGrade() .", <br>";
$str .= "您的折扣是 " . $user->getDiscount() . "<br>";
$str .= "购买 $number 本 《 ". $book->getProductName() ;
$str .=  "》的价格是 $price <br><br>";
echo $str;


$user = new vipUser("Tom");
$price = ProductSettle::finalPrice($user,$book,$number);
$str =  "您好,尊敬的用户 " . $user->getName() . " <br>";
$str .= "您的级别是 ". $user->getGrade() .", <br>";
$str .= "您的折扣是 " . $user->getDiscount() . "<br>";
$str .= "购买 $number 本 《 ". $book->getProductName() ;
$str .=  "》的价格是 $price <br><br>";
echo $str;

$user = new InnerUser("Tom");
$price = ProductSettle::finalPrice($user,$book,$number);
$str =  "您好,尊敬的用户 " . $user->getName() . " <br>";
$str .= "您的级别是 ". $user->getGrade() .", <br>";
$str .= "您的折扣是 " . $user->getDiscount() . "<br>";
$str .= "购买 $number 本 《 ". $book->getProductName() ;
$str .=  "》的价格是 $price <br><br>";
echo $str;
?>

分享到:
评论

相关推荐

    开发php接口实例

    首先,我们需要了解PHP接口(API)的基本概念。API代表应用程序编程接口,它定义了软件系统之间交互的规则。在PHP中,我们通常通过HTTP协议创建RESTful API,这种API风格基于HTTP方法(GET、POST、PUT、DELETE等)来...

    php接口开发代码

    当我们谈论"PHP接口开发代码"时,我们通常是指通过PHP编写的服务端接口,这些接口可以接收客户端(如网页、移动应用)的请求,并返回所需的数据或执行特定的功能。 接口开发是现代Web应用程序的核心部分,它允许...

    双乾网银支付网关php接口

    双乾网银支付网关PHP接口是专门为电商网站和在线服务提供商设计的一种支付解决方案,它允许用户通过他们的银行账户直接进行支付,简化了交易过程并提高了支付的安全性。这个接口通常包括一系列API调用,使得开发者...

    php接口文件

    "php接口文件"这个主题涉及的是如何使用PHP语言来设计和实现API接口。PHP是一种广泛使用的服务器端脚本语言,尤其适用于Web开发,因此它常用于创建API以供其他应用或服务调用。 首先,我们来看`index.html`,这是...

    PHP接口精讲视频

    本"PHP接口精讲视频"深入浅出地讲解了这一关键主题,旨在帮助开发者更好地理解和应用PHP接口。 首先,理解接口的基本概念至关重要。接口就像一个合同,规定了类必须实现哪些方法,但并不规定这些方法如何实现。在...

    php接口开发包

    php接口开发包,里面分为utf-8和GBK两个版本的内容 ==== 基本要求 ==== 1. PHP 5.x版本(php 4.x版本兼容性未测试,如有需要,请自行修改) 2. PHP 的 mbstring 或者 iconv 模块 3. 如果需要后台交易和查询请求,...

    php接口文档

    PHP接口文档的知识点主要包括以下几个方面: 1. PHP API接口基础知识 API是Application Programming Interface的缩写,指的是应用程序编程接口。PHP API接口是允许应用程序之间进行数据交互和功能调用的一种接口。...

    php接口数据加密、解密、验证签名

    在PHP中,接口数据的安全传输至关重要,这通常涉及到数据加密、解密以及签名验证等步骤。上述代码展示了如何使用PHP实现AES和RSA两种加密算法来处理接口数据。 首先,AES(Advanced Encryption Standard)是一种...

    农行支付接口开发PHP接口包

    本文将详细探讨“农行支付接口开发PHP接口包”的相关知识点,帮助开发者更好地理解和使用这一工具。 首先,我们要明白“农行支付接口”是指中国农业银行提供的用于处理在线交易的API(应用程序接口)。这些接口允许...

    支付宝免签约php接口,asp接口代码

    支付宝免签约php接口,asp接口代码 支付宝免签约即时到帐系统(接入通用教程) 一、免签约接口运行原理:(用户充值,用户升级,自动发卡等网站) 二、回调参数说明:(GET方式) 参数名 参数 说明 交易密钥 ...

    帝国cms app php接口

    【帝国CMS App PHP接口】是基于PHP开发的一套用于移动应用(APP)与帝国CMS内容管理系统之间交互的接口。这个接口主要使用AJAX技术进行数据通信,并通过JSON格式传输数据,便于实现新闻类数据的实时获取和更新。下面...

    api manager, php接口管理工具,php api manager工具,php api工具

    API Manager 是一款基于 PHP 开发的接口管理工具,专为开发者设计,用于高效地管理和测试API接口。在软件开发过程中,API(Application Programming Interface)扮演着至关重要的角色,它允许不同的应用程序之间进行...

    农行PHP接口实例

    【农行PHP接口实例】是针对中国农业银行提供的B2C支付接口的一种PHP实现,用于商家集成农行的在线支付功能。B2C(Business to Consumer)支付模式是指商家直接面向消费者进行交易的电子商务类型,常见于线上购物、...

    自已写的 php 微信支付V3接口类

    PHP接口类应能正确处理这些回调,验证通知的签名,检查订单状态,并进行相应的业务逻辑处理。 7. **异常处理**: 在实现过程中,可能会遇到网络问题、参数错误、证书问题等。接口类应具备良好的异常处理机制,能够...

    PHP接口文档

    "PHP接口文档"通常指的是PHP应用程序或服务提供的API(Application Programming Interface)的详细规格说明。 接口文档的主要目的是为开发者提供清晰的指南,让他们了解如何正确地调用和使用特定的PHP函数、类或...

    易宝php接口sdk

    易宝PHP接口SDK是专门为开发者设计的一套工具集,用于集成易宝支付的服务到PHP应用程序中。易宝支付,又称为YeePay,是中国领先的第三方支付平台,提供各种支付解决方案,包括在线支付、移动支付、扫码支付等。通过...

    php接口程序,haha

    使apache与php可以通信的接口程序

    ecshop 客户端包含服务端php接口文件,android客户端和ios客户端

    在这个名为"ECMobile_Universal-master"的压缩包中,我们找到了ECShop的客户端组件,包括针对Android和iOS操作系统的应用程序源代码,以及服务端PHP接口文件。这个综合包旨在帮助开发者为ECShop网站创建功能完备的...

    轻量级 PHP 接口开发框架 LyAPI

    LyAPI是一款轻量级的PHP开源框架,它可以让接口开发变得简单: 功能完备:LyAPI内置了一些常用的功能,同时还在不断的开发拓展库。 开发简单:一个API就是一个函数,你只需要将数据返回,框架会自动将数据进行转换并...

Global site tag (gtag.js) - Google Analytics