命令行执行phpunit 类找不到_php的命令行游戏:石头剪刀布游戏

php通常用来写服务器端程序,通过php渲染HTML代码并输出到客户端,或者用来写API接口,服务器端的php程序通常是通过http协议进行调用访问的。

其实php程序也可以通过命令行调用,我们在写程序的时候,为了验证某个功能是否正确,可以直接写一段调用代码,然后通过命令行运行,就可以得到验证结果了。

通过命令行运行php程序有如下的好处:

1 在开发程序的时候可以不用切换到浏览器进行测试,在phpstrom里直接通过终端窗口就可以执行验证程序了

2 通过命令行程序,可以快速建立最简单的单元测试代码,当然,如果要进行系统化、规范化的单元测试,最好还是选择phpunit 或者是 codeception等测试框架进行测试

3 通过命令行调用php程序,可以避免因为web服务器配置而引起的错误,导致程序调试时误导了开发者,我曾经在php的web端代码里调用curl功能,发现请求的目标服务器一直返回400错误,因为忽略了是web服务器的原因,一直在调试代码,最后才发现代码是正确的,只是因为web服务器配置的问题,导致调用curl功能出错了,如果切换到命令行程序下代码是正常运行的,这样其实工作的重点就变成跳转web服务器的配置,而不是在糊里糊涂的修改代码了。

下面我们就来看看怎么在命令行下执行php代码。

下面的代码是一个用php代码写的石头剪刀布游戏:

<?phpecho "****开始玩游戏****";$game=new Game();$isContinu=1;while ($isContinu){ echo "请选择你要出什么:1代表石头、2代表剪刀、3代表布、0代表退出游戏"; $input=intval(trim(fgets(STDIN))); switch ($input) { case 1: case 2: case 3: $computerSkill=$game->computerFight(); $result = $game->pk($input, $computerSkill); echo "你出:". $game->skills[$input].","; echo "电脑出:".$game->skills[$computerSkill].","; echo "你".$game->pkResult[$result].""; break; case 0: echo '您已经退出游戏'; $isContinu=0; break; default: echo "输入有误,只能输入0到3的数字,1代表石头、2代表剪刀、3代表布、0代表退出游戏"; $isContinu=1; }}class SkillNode{ public $previous=null; public $next=null; public $data=null;}class Game { public $skills=[1=>'石头',2=>'剪刀',3=>'布']; public $pkResult=['输了','赢了','平局']; public $skillNodeList=array(); public $roundCount=0; public $winCount=0; public $loseCount=0; public $tieCount=0; public function __construct() { for ($i = 1; $i < 4; $i++) { $skillNode=new SkillNode(); $skillNode->data=$i; if ($i == 1) { $skillNode->previous=3; $skillNode->next=$i+1; } elseif ($i == 3) { $skillNode->previous=$i-1; $skillNode->next=1; }else{ $skillNode->previous=$i-1; $skillNode->next=$i+1; } $this->skillNodeList[$i]=$skillNode; } } public function pk($skillMan,$skillComputer){ $this->roundCount+=1; if ($skillMan == $skillComputer) { $this->tieCount+=1; return 2; }else{ if (($this->skillNodeList[$skillMan])->next == $skillComputer) { $this->winCount+=1; return 1; }else{ $this->loseCount+=1; return 0; } } } public function computerFight() { return random_int(1, 3); }}?>

假设我们将上面的代码保存到d盘的rockgame.php文件上,这样我们在phpstorm的terminal窗口,用下面的代码就可以通过命令行调用该程序了:

因为rockgame.php文件保存在D盘根目录下,我用cd命令,跳转到D盘,然后执行下面的命令就可以了,当然,前提条件是:你的电脑已经安装了php并且将php的路径加入到了系统参数中了:

php rockgame.php

结果入下图:

72f2bfc606e28a01f6917b4b8d58d84e.png

石头、剪刀、布,只有三个游戏技能,最简单的方式用几个判断语句就可以了,但是,为了体现封装的效果,用了OOP的方式,建立了game类,将游戏的业务逻辑封装到了game类里。

同时,为了体现可扩展性和代码判断逻辑的统一,特意建立了skillNode类,并在游戏构造函数里进行了初始化,这样在pk方法里,就可以用统一的判断逻辑,假设游戏后来有更多的游戏技能加入,同时,游戏的pk逻辑不变化的话,就只要往技能列表里增加技能元素就好,不用修改其他代码了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PhalApi 2.x 是一个轻量级的 PHP 开发框架,它提供了一些便捷的工具和功能,方便我们进行开发。在进行开发过程中,我们需要编写一些单元测试和浏览器测试,以确保代码的正确性和稳定性。 1. 单元测试 PhalApi 2.x 的单元测试使用 PHPUnit 进行测试,PHPUnit 是一个流行的 PHP 单元测试框架,它提供了一些便捷的工具和功能,方便我们进行单元测试。 编写单元测试的过程如下: 1)创建测试 在 tests 目录下创建一个测试,继承 \PHPUnit\Framework\TestCase ,并在中编写测试方法。例如: ```php use PHPUnit\Framework\TestCase; class DemoTest extends TestCase { public function testDemo() { // 测试代码 } } ``` 2)运行测试 在命令行执行以下命令即可运行测试: ```bash ./vendor/bin/phpunit tests/DemoTest.php ``` 2. 浏览器测试 PhalApi 2.x 的浏览器测试使用 Selenium 进行测试,Selenium 是一个流行的浏览器自动化测试工具,它提供了一些便捷的工具和功能,方便我们进行浏览器测试。 编写浏览器测试的过程如下: 1)安装 Selenium 在命令行执行以下命令安装 Selenium: ```bash composer require --dev phpunit/phpunit-selenium ``` 2)编写测试 在 tests 目录下创建一个测试,继承 \PHPUnit_Extensions_Selenium2TestCase ,并在中编写测试方法。例如: ```php use PHPUnit_Extensions_Selenium2TestCase; class DemoBrowserTest extends PHPUnit_Extensions_Selenium2TestCase { protected function setUp() { $this->setBrowser('firefox'); $this->setBrowserUrl('http://localhost/'); } public function testDemo() { $this->url('/'); $this->assertEquals('Demo', $this->title()); } } ``` 3)运行测试 在命令行执行以下命令即可运行测试: ```bash ./vendor/bin/phpunit tests/DemoBrowserTest.php ``` 以上就是 PhalApi 2.x 的单元测试和浏览器测试的简单介绍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值