![9cb33f5ad390dc34e4e8c2fe0e7b0072.png](https://i-blog.csdnimg.cn/blog_migrate/1027337dc3202f2cb20a1826a52cf592.jpeg)
优点
跨平台。
对PHP支持refactor功能。
自动生成phpdoc的注释,非常方便进行大型编程。
内置支持Zencode。
生成类的继承关系图,如果有一个类,多次继承之后,可以通过这个功能查看他所有的父级关系。
支持代码重构,方便修改代码。
拥有本地历史记录功能(local history功能)。
方便的部署,可以直接将代码直接upload到服务器。
快捷键
phpstorm有非常非常多并且好用的的快捷键,我下面就举一些经常用的的快捷键演示,还有一些不常用的就不举例了,绝对能提高你开发的效力率...
(Windows与Mac类似,只要把command键换成ctrl)
查询相关
command + f 查找当前文件
command + r 查找替换
command + e 打开最近的文件
command + shift + o 快速查询文件
command + shift + f 关键字查找,更强大的查询器(机器不好的,最好还是先确定一下目录)
command + shift + r 高级替换
command + alt + b 找到当剪类的所有子类
alt + shift + c 查找最近修改的文件
alt + f7 直接查询选中的字符
ctrl + f7 文件中查询选中字符
command + 鼠标点击 跳到类或方法或变量等声明处
command + shift + tab 切换tab页文件
command + shift + +,- 展开或缩起
command + . 折叠或展开选中的代码
自动代码
alt + 回车 导入包,自动修正
command + n 快事为每个成员属性生成 getter 及 setter 方法
ctrl + i 快速生成插入魔术方法
ctrol + o 复写父类方法
command + alt + l 对当前文件进行格式化排版
command + d 复制当剪行
command + / // 注释
command + shift + / / / 注释
以command + n举个例子
我创建了一个Person类在/Entity/目录下,然后我设置一些私有的属性如下代码:
namespace Entity;class Person{ private $sign = ''; private $name = ''; private $age = 0;
private $work = '';
private $sex = '女';
}
然后咱们使用command + n
在弹出来的窗口选择"PHPDoc Blocks..."再再弹出的窗口选择所有属性再点"OK":
namespace Entity;/**
* Class Person
* @package Entity
*/class Person{ /**
* @var string
*/
private $sign = ''; /**
* @var string
*/
private $name = ''; /**
* @var int
*/
private $age = 0; /**
* @var string
*/
private $work = '';
/**
* @var string
*/
private $sex = '女';
}
ok,咱们继续,再次使用command + n
键选择Contructor...
弹出需要进行传参赋值的属性:
/**
* Person constructor.
* @param string $sign
*/
public function __construct($sign)
{ $this->sign = $sign;
}
如果不选择的话将不需要对成员属性进行设置。
然后咱们再来看看其他功能,比如"Implement Methods..."这个是快速生成魔术方法。
通常咱们设置、获取一个成员属性时最好不要直接使用$person->name = $name
这种方式进行设置参数或取得参数值,建议是对每个属性都开放一个 getter
跟 setter
方法,这样可以很方便得对传进或传出去的值进行处理,这就是上面我为什么要把成员属性设置置为私有的原因之一
同样的command + n
选择"Getters and Stetters" 然后选择所有属性,它就会把所有的属性设置getter
及setter
方法,这里要注意的是Person
的sign
是唯一的,不可进行修改,所以咱们要把设置sign
的方法去掉。注意: 最好setter
方法设置完后返回当剪对象,这样的话咱们就可以连写了并且phpstorm的提示还相当友好下面有例子:
/**
* @return string
*/
public function getSign()
{ return $this->sign;
} /**
* @return string
*/
public function getName()
{ return $this->name;
} /**
* @param string $name
* @return $this
*/
public function setName($name)
{ $this->name = $name; return $this;
} /**
* @return int
*/
public function getAge()
{ return $this->age;
} /**
* @param int $age
* @return $this
*/
public function setAge($age)
{ $this->age = $age; return $this;
} /**
* @return string
*/
public function getWork()
{ return $this->work;
} /**
* @param string $work
* @return $this
*/
public function setWork($work)
{ $this->work = $work; return $this;
}
/**
* @var string
*/
private $sex = '女'; /**
* @return string
*/
public function getSex()
{ return $this->sex;
} /**
* @param string $sex
* @return $this
*/
public function setSex($sex)
{ $this->sex = $sex;
return $this;
}
连写的例子:
use EntityPerson;$person = new Person();
$person->setName("蛋蛋")
->setAge(17)
->setWork('student');
最后再演示一个快速复写被继承类的功能。咱们新建一个Man类,然后继承Person类,上面的Person类缺省是女性别,所以我们需要重写它并且加上"中国男人"。同样的使用command + n打开快捷窗口选择 "Override Methods..." 弹出来可被复写的方法:
连写的例子:
use EntityPerson;$person = new Person();
$person->setName("蛋蛋")
->setAge(17)
->setWork('student');
最后再演示一个快速复写被继承类的功能。咱们新建一个Man
类,然后继承Person
类,上面的Person类缺省是女性别,所以我们需要重写它并且加上"中国男人"。同样的使用command + n
打开快捷窗口选择 "Override Methods..." 弹出来可被复写的方法:
然后咱们选择getSex
跟setSex
方法,然后确定,在Man
方法下生成以下方法。
namespace Entity;/**
* Class Man
* @package Entity
*/class Man extends Person{ /**
* @return string
*/
public function getSex()
{ return parent::getSex(); // TODO: Change the autogenerated stub
} /**
* @param int $sex
* @return $this
*/
public function setSex($sex)
{ return parent::setSex($sex); // TODO: Change the autogenerated stub
}
}
咱们把return parent::getSex()
跟return parent::setSex( $age )
删除掉,不需要这样,然后改成如下模式。
/**
* @return string
*/
public function getSex()
{ if ( ! mb_strpos(parent::getSex(), "中国") ) return "中国".parent::getSex(); return parent::getSex();
} /**
* @param int $sex
* @return $this
*/
public function setSex($sex)
{ if( ! mb_strpos($sex, "中国") )
$sex = "中国".$sex; return parent::setSex($sex);
}
希望这篇详细教程可以帮助到大家。