关于php的开发工具很多,目前市面上最好用最强大的莫过于PhpStorm这款开发神器了,但是鉴于很多开发者朋友在网站上下载的PhpStorm开发工具不能用,或者使用起来很不方便,笔者把最好用的下载地址及免费激活教程共享出来。

一、安装并配置集成环境XAMPP

具体可以参考我的这篇博客:PHP开发环境搭建一:PHP集成环境XAMPP 的安装与配置

二、下载安装并破解PhpStorm

1. 点击这里下载PhpStorm-2017.3.4.exe 的Windows版本。提取密码: myye。

下载完成后,直接进行安装,安装过程很简单。

2. 注册免费激活
首先,需要修改本地的hosts文件(路径一般为C:\Windows\System32\drivers\etc\hosts),添加下面这行代码。

0.0.0.0 account.jetbrains.com
保存即可。目的是为了避免PhpStorm联网注册时失败。

其次,直接用浏览器打开 http://idea.lanyus.com/ ,点击页面中的 获得注册码 ,拷贝激活码。

最后,运行PhpStorm-2017.3,在激活界面,切换至Activation Code选项,粘贴刚刚拷贝的激活码,点击激活即可。

3.配置PhpStorm

3.1.Setting中配置Interpreter

3.2.添加本地Interpreter Path

3.3.选择PHP解释器(php.exe)的安装目录

这个安装目录在XAMPP的安装目录下的\php\php.exe这里。

点击OK配置完毕。

4.测试一下

4.1.新建一个calendar.class.php日历类

<?php
class Calendar {
private $year; //当前的年
private $month; //当前的月
private $start_weekday; //当月的第一天对应的是周几
private $days; //当前月一共多少天
function __construct(){
$this->year=isset($_GET["year"]) ? $_GET["year"] : date("Y");
$this->month=isset($_GET["month"]) ? $_GET["month"] : date("m"); $this->start_weekday=date("w", mktime(, , , $this->month, , $this->year));
$this->days=date("t", mktime(, , , $this->month, , $this->year));
}
function out(){
echo '<table align="center">';
$this->chageDate("test.php");
$this->weeksList();
$this->daysList();
echo '</table>';
}
private function weeksList(){
$week=array('日','一','二','三','四','五','六');
echo '<tr>';
for($i=; $i<count($week); $i++)
echo '<th class="fontb">'.$week[$i].'</th>';
echo '</tr>';
}
private function daysList(){
echo '<tr>';
//输出空格(当前一月第一天前面要空出来)
for($j=; $j<$this->start_weekday; $j++)
echo '<td> </td>'; for($k=; $k<=$this->days; $k++){
$j++;
if($k==date('d'))
echo '<td class="fontb">'.$k.'</td>';
else
echo '<td>'.$k.'</td>';
if($j%==)
echo '</tr><tr>'; }
//后面几个空格
while($j%!==){
echo '<td> </td>';
$j++;
}
echo '</tr>';
}
private function prevYear($year, $month){
$year=$year-; if($year < )
$year = ;
return "year={$year}&month={$month}";
} private function prevMonth($year, $month){
if($month == ) {
$year = $year -; if($year < )
$year = ;
$month=;
}else{
$month--;
}
return "year={$year}&month={$month}";
} private function nextYear($year, $month){
$year = $year + ;
if($year > )
$year = ;
return "year={$year}&month={$month}";
} private function nextMonth($year, $month){
if($month==){
$year++;
if($year > )
$year=;
$month=;
}else{
$month++;
} return "year={$year}&month={$month}";
}
private function chageDate($url=""){
echo '<tr>';
echo '<td><a href="?'.$this->prevYear($this->year, $this->month).'">'.'<<'.'</a></td>';
echo '<td><a href="?'.$this->prevMonth($this->year, $this->month).'">'.'<'.'</a></td>';
echo '<td colspan="3">';
echo '<form>';
echo '<select name="year" onchange="window.location=\''.$url.'?year=\'+this.options[selectedIndex].value+\'&month='.$this->month.'\'">';
for($sy=; $sy <= ; $sy++){
$selected = ($sy==$this->year) ? "selected" : "";
echo '<option '.$selected.' value="'.$sy.'">'.$sy.'</option>';
}
echo '</select>';
echo '<select name="month" onchange="window.location=\''.$url.'?year='.$this->year.'&month=\'+this.options[selectedIndex].value">';
for($sm=; $sm<=; $sm++){
$selected1 = ($sm==$this->month) ? "selected" : "";
echo '<option '.$selected1.' value="'.$sm.'">'.$sm.'</option>';
}
echo '</select>';
echo '</form>';
echo '</td>'; echo '<td><a href="?'.$this->nextYear($this->year, $this->month).'">'.'>>'.'</a></td>';
echo '<td><a href="?'.$this->nextMonth($this->year, $this->month).'">'.'>'.'</a></td>';
echo '</tr>';
}
}
?>

4.2.新建一个test.php测试类

<style>
table {
border:1px solid #;
}
.fontb {
color:white;
background:blue;
} th {
width:30px;
}
td,th {
height:30px;
text-align:center; }
form {
margin:0px;
padding:0px;
}
</style>
<?php
include "calendar.class.php";
$calendar=new Calendar;
$calendar->out();
?>

4.3.点击右上角的浏览器

有问题的联系笔者电话微信18629374628,欢迎交流

最新文章

  1. Flask 的 Context 机制
  2. Windows10
  3. usb驱动开发14之设备生命线
  4. JQuery实现click事件绑定与触发方法分析
  5. 形状特征提取-Hu不变矩(转载)
  6. 只用css来美化的上传表单按钮(抄的迅雷的)
  7. [工作记录] Android OpenGL ES 2.0: square texture not supported on some device
  8. UVA 11134 - Fabled Rooks(贪心+优先队列)
  9. HTML5 canvas 绘制五星红旗
  10. Cookie的简单使用
  11. volatile可见性的一些认识
  12. linux下ruby使用tcl/tk编程环境设置
  13. Android jks 签名文件 生成
  14. 视觉显著性检测(Visual saliency detection)相关概念
  15. python字典设置初始值setdefault()与get()
  16. rails常用gem
  17. 【2008-2009 ICPC NEERC D】Deposits(暴力)
  18. Redis高可用详解:持久化技术及方案选择 (推荐)--转载自编程迷思博客www.cnblogs.com/kismetv/p/8654978.html
  19. Mysql外键设置中的CASCADE、NO ACTION、RESTRICT、SET NULL
  20. Python处理验证码第一篇(pytesser初探及报错处理)

热门文章

  1. ThinkPHP find大坑 不要随便用
  2. MVC中的验证码
  3. Java基础入门 - 关键字及其分类和说明
  4. maven课程 项目管理利器-maven 2-2第一个maven案例hellomaven
  5. 自写Jq动画载入插件
  6. 《ArcGIS Runtime SDK for Android开发笔记》——问题集:使用TextSymbol做标注显示乱码
  7. android ContentProvider共享数据
  8. (转)轻松解决 MyEclipse、Eclipse 编译时提示 @Override The method of type must override a superclass method 即 @Override 标注问题
  9. centos7 gearmand-1.1.15打包rpm
  10. Redis 基础概念和命令