竹磬网-邵珠庆の日记 生命只有一次,你可以用它来做些更多伟大的事情–Make the world a little better and easier


185月/170

优雅的使用 phpStorm 开发工具

发布在 邵珠庆

按照惯例依然是从百科上复制一条简介: PhpStorm 是 JetBrains 公司开发的一款商业的 PHP 集成开发工具。PhpStorm可随时帮助用户对其编码进行调整,运行单元测试或者提供可视化debug功能和智能HTML/CSS/JavaScript/PHP编辑、代码质量分析、版本控制集成(SVN、GIT)、调试和测试等功能。另外,它还是跨平台。在Windows和MacOS下都可以使用。PhpStorm-让开发更智能,而不是更困难。

听说phpStorm 10支持php7呃

优点

  1. 跨平台。
  2. 对PHP支持refactor功能。
  3. 自动生成phpdoc的注释,非常方便进行大型编程。
  4. 内置支持Zencode。
  5. 生成类的继承关系图,如果有一个类,多次继承之后,可以通过这个功能查看他所有的父级关系。
  6. 支持代码重构,方便修改代码。
  7. 拥有本地历史记录功能(local history功能)。
  8. 方便的部署,可以直接将代码直接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 这种方式进行设置参数或取得参数值, 建议是对每个属性都开放一个 gettersetter 方法,这样可以很方便得对传进或传出去的值进行处理,这就是上面我为什么要把成员属性设置置为私有的原因之一

同样的 command + n 选择"Getters and Stetters" 然后选择所有属性,它就会把所有的属性设置 gettersetter 方法,这里要注意的是 Personsign 是唯一的,不可进行修改,所以咱们要把设置 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 Entity\Person;
$person = new Person();
$person->setName("蛋蛋")
    ->setAge(17)
    ->setWork('student');

最后再演示一个快速复写被继承类的功能。咱们新建一个 Man 类,然后继承 Person 类,上面的Person类缺省是女性别,所以我们需要重写它并且加上"中国男人"。同样的使用 command + n 打开快捷窗口选择 "Override Methods..." 弹出来可被复写的方法:

然后咱们选择 getSexsetSex 方法,然后确定,在 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);
    }

碉堡了有木有。

工具类等

看起来好多的样纸,我懒,不想讲可不可以?我就挑几个好不好?

  • 连拉ssh 照着配就行了,很简单

  • composer 这个也很明了吧,不多说了,平时咱们都是通过命令行来实现的
  • vagrant 这个phpstorm 10集成了vagrant,介于咱们自己已经搭建好了自己的vagrant环境,就不使用phpstorm所集成的啦

参考: 《使用Virtual Box和Vagrant搭建开发环境》

Database 工具

phpStorm所集成的database工具十分强大,当然它还有单独的database工具叫做: DataGrip,当然需要独立购买,咱们phpStorm有集成,就使用它好啦哈哈....(咱们的PhpStorm可是花钱买的,请支持正版)

Database工具一般在右侧栏,如果没有的话搜一下就好了,多简单的事儿呀...

开始创建一个数据库连接吧...

选择如上图的那个"+"号,然后选择 Data Source 数据来源,再选择数据库类型,一般咱们都是使用mysql吧,这次咱们试试新的,比如 SQLite

选择 sqlite 数据文件的地址,然后选择驱动,如果没有的话得先下载安装sqlite的驱动插件,这个很简单,在Driver下有提示,照做就是了...

咱们先看一下mysql的配制吧...

mysql的也非常简单,如果需要ssh/ssl连接的话,需要在SSH/SSL选项卡上配配地址入连接密码或sshkey...

配制好了,打开选择的数据库:

上图是连接的数据库的表及表字段信息... 来演示一下查询... 点击那"QL"样的dos窗口图标会弹出一个tab页,咱们可以在这里写sql语句。

咱们查询 User 表下的所有数据,可以看到会有相当提示,这是相当的好使啊...查询完成后在下面的 Database Console 上会有显示表数据,可对它进行修改,等等操作增加数据也可以。

快捷键 command + alt + l 不但对代码进行格式化,也sql语句也是非常有效的,如上图。

在"Database Console"栏上点"Output"选项卡可以查看sql语句执行的情况、记录及所消耗的时间等等信息...

  • command + 回车 执行sql语句或执行选中的sql语句

关于database工具的用法还有很多很多,我就不一一讲解了,大家可以自己慢慢去研究,真的非常好用

CVS 和 Git

  • command + k
  • command + shift + k

关于FTP的配制,由于我不推荐使用,所以这里就不多说啦!

都到这了,那咱们就说说在phpStorm上如何使用git工具吧

算了,还是举一个例子吧,配辣么多太累了,一会我看下有没有已经配好的,如果有的话一会拉出来截个图看看就行吧,反正现在svn用得也比较少了,还是git用得爽,分布式嘛,离线嘛,多好...关于 svn -> git 可以参考我之前写的一篇文章

《将代码库从Svn迁移Git》

从git服务器上把代码抓到本地

选择 CVS -> Checkout from Version Control -> Git

在弹出的窗口输入自己的git仓库信息:

注意 conle 的时间如果没有设置你的github账号的话可能会提示你输入账号信息,咱们输入就行了。如果需要修改的话则在设置里面进行修改,咱们可以使用 command + , 打开"Preferences" 然后找到"Version Control"选项目的"GitHub"进行设置,还有"Git"路径。

从mster创建分支

创建分支以通过命令行进行创建,咱们可以通过phpstrom的窗口进行创建,如下:

这个东西在右下角,"Git:master" 然后弹出上面窗口选择"New Branch" 然后输入新分支的名称就好了,它会自动切换到新分支下。

是不是超级简单呀...

提交代码至远程分支

当咱们修改完代码后,咱们需要把代码提交到远程分支上,使用快捷键 command + k 提交相当修改后的代码,双击文件可以进行对比。在"Commit Message"写上修改的东西然后点提交,这时就把代码提交到本地分支上了。

不使用快捷键的话,可以使用"CVS -> Commit Changes"提交,也会弹出下面窗口...

提交到本地分支后,咱们需要把代码推到远程分支上,所以需要使用快捷键: command + shif + k 提交远程分支...

也可以使用"CVS -> Git -> Push"进行提交...效果是一样的

注意svn木有 command + shift + k 这一步

合并分支

分并非常简单,只要选择需要合并的分支,然后merge就行了,如下图:

这样就合并完成,当然,如果有冲突的话会提交有冲突,并让你解决,如果没有的话就直接合并成功了...然后就可以push了......

Compare 是对合并的分支进行对比...

使用svn...

灰常抱歉,我电脑上木有找到相关Svn项目的代码,就不多说了...

安装插件

这里讲一个javascript 的安装,使用快捷键 cmd + , 打开 Preferances

安装 JavaScript 插件

Languages & Frameworks -> Javascript -> Libraries

选择add需要的框架

安装symfony2插件,搜索插件,然后点install

然后重启phpStorm 就完事了....

注意

  • 灰色+波浪线: 变量未使用
  • 黄色波浪线: 变量未名单词拼写问题
  • 红色波浪线: 变量未定义
  • 还有好多我就不一一举例了,可能是因为我代码写得太好,出错的东西比较少吧...

右边栏出现红色,这点是必须要杜绝的,好的代码不应该出现红色的任何提示...一旦出现一定要马上解决,好的代码不应该出现一个黄、红色的提示。

TODO 表示待办事件,当提交到vcs、svn或git的时候,会提示是还有未处理的事件,需要确认提交。

1510月/150

简洁优雅的命令行工具 homebrew-cask

发布在 邵珠庆

简洁优雅的命令行工具 homebrew-cask

使用homebrew-cask安装软件,只需要一行命令

brew cask install sublime-text skitch dropbox google-chrome

这样以下就安装了4个软件,轻松搞定,不需要鼠标点击,no dragging, no dropping。

* 命令行?好像很高大上的赶脚,我能学会吗? *

homebrew-cask是一套建立在homebrew基础上的Mac软件安装命令行工具(想要详细了解homebrew,自己google)。拥有她只需要简单的3步:

  1. 安装Xcode(Mac App Store免费一键下载)
  2. 安装homebrew(一行命令直接搞定,easy)
  3. 安装homebrew-cask(也是一行命令搞定,一点难度都木有)

不要一听到是命令行就被吓到,其实没有那么复杂,命令行你就简单理解为你输入一行一行指令,指令对了系统就会去执行,用狗血的拟人比喻,就是你让计算机去干活,只要命令下得对,它就屁颠屁颠卖命去了。

1. 安转Xcode

Xcode安装现在已经非常简单,打开「Mac App Store」,又上角搜索 xcode 就可以找到,点击安装,耗时较长耐心等待。

Mac App Store

这一步是鼠标操作,很简单,就这样跳过了。

2. 安装homebrew

homebrew的官网是http://brew.sh/,上面有简体版本,可以了解以下homebrew是干啥的,但回到安装的正题,一行命令安装:

先打开 Terminal,找不到的可以点击Mac屏幕右上角的放大镜(这货是传说中的Spotlight),然后输入terminal回车就能直接打开。

Searching terminal on Spotligh

打开Terminal后,把下面的一样命令复制粘贴到里面,按下回车:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Install homebrew in terminal

屏幕一堆英文乱闪之后,就搞定了(命令提示符号回到原来的样子)。

3. 安装homebrew-cask

还是那个「Terminal」窗口,再把下面的命令复制粘贴过去,按下回车。

brew tap phinze/homebrew-cask && brew install brew-cask 

在安装brew-cask的时候,会要求你输入当前用户的密码,输入过程中不会有屏幕反馈,你就闭着眼睛输入,然后回程就可以。

Install homebrew-cask in terminal

又一大波文字乱闪,OK啦。

如何使用homebrew-cask

需要安装应用时,打开「Terminal」,输入

brew cask install XXX

# 将XXX替换成你想要安装的软件名称就可以了

下面做个示范:

Install homebrew-cask usage

* 常用命令 *

  • brew cask search 列出所有可以被安装的软件
  • brew cask search drop 查找所有和 drop 相关的应用
  • brew cask info thunder 查看 迅雷 应用的信息,这货安装的可是最新版本的迅雷哦!
  • brew cask uninstall qq 卸载 QQ

特别注意 homebrew-cask是将应用程序放置在/opt/homebrew-cask/Caskroom/下,会在你的家目录中的「应用程序」文件夹中创建一个类似快捷方式的替身。在Finder的偏好设置中,第三个侧边栏勾选上你的家目录,这样找应用会方便一些。但不用太担心你,Launchpad是会找到这个目录下的应用的,需要Alfred支持请查看brew cask alfred

homebrew-cask vs Mac App Store

homebrew-cask 和 Mac App Store 相比,目前还有很多优势:

  1. 安装软件体验非常一致简洁优雅
  2. 对常用软件支持更全面,例如 MPlayerX 已经宣布不在更新 Mac App Store上 的版本
  3. 软件更新速度快,体验好。例如Alfred 2.0已经出了很久,但在 Mac App Store 上还是1.2版本,QQ也是这样的情况

当然我承认,命令行的交互方式并不是人人都能学会和接受,homebrew-cask其实已经做的足够简单易用,习得这一技能能在以后提高效率。homebrew-cask安装省时省力,更新应用也简单,不用一个一个去找,其实先花时间学习,是值回本钱的,大家自己算算这笔帐。

Mac App Store 生态圈远不完善,审核流程过长,限制太多,维护成本过高让很多应用开发者被迫离开。虽然我个人很喜欢 homebrew-cask,但还是希望 Apple 尽快完善 Mac App Store ,等到有一天我可以不再使用 homebrew-cask。这样说是不是显得我很薄情?:)

关于软件更新

homebrew-cask团队一直还在探讨软件更新策略,以及homebrew-cask与homebrew的关系。目前倾向于:

  1. homebrew-cask作为软件安装工具体验是不错的(相比你要自己到网页上搜索,下载,拖转安装)
  2. 大部分软件都有自更新的功能,体验也不错,绝大多数只需要一次点击就能更新
  3. 实际上软件更新没有那么频繁,使用brew cask uninstall qq && brew cask install qq 也比上网自己下载更新方便

软件更新的结论

目前通过homebrew-cask安装的软件有两种更新方法:

  1. 使用软件自己的更新流程
  2. brew cask uninstall APP && brew cask install APP 先删除App,再重新安装

详细情况可以围观这个讨论帖子: brew cask upgrade, 具体看 第2条 和 第5条 评论。

一键装机?有了homebrew-cask就可以

# 到目前October 5, 2013 1:43 PM为止,homebrew-cask共收录566款应用程序
# 瞬间安装所有常用软件

brew cask install alfred
brew cask install the-unarchiver
brew cask install qq
brew cask install line
brew cask install skype
brew cask install thunder
brew cask install mplayerx
brew cask install evernote
brew cask install skitch
brew cask install dropbox
brew cask install google-chrome
brew cask install mou
brew cask install iterm2
brew cask install sublime-text
brew cask install virtualbox