2010-05-24

在Emacs里使用 PHPCS

类归于: symfonybobhero @ 13:36

前文书说的好 MAKER 可以在VIM 里使用PHPCS ,VIM是很牛B 的编辑器,但是还有一个更牛B 的编辑器就是 EMACS。

具体有多牛,去GOOGLE 百度一下

PHPCS是什么 ,请参考前文

这里贴上 EMACS 下使用的代码


(defun php-lint ()
(interactive)
(let ((compilation-error-regexp-alist '(php))
(compilation-error-regexp-alist-alist ()))
(pushnew '(php "\\(syntax error.*\\) in \\(.*\\) on line \\([0-9]+\\)$" 2 3 nil nil 1)
compilation-error-regexp-alist-alist)
(compile (concat "php -l -f \"" (buffer-file-name) "\""))))
(define-key php-mode-map (kbd " ") 'php-lint)
(defun phpcs ()
"Performs a PHP code sniffer check on the current file."
(interactive)
(let ((compilation-error-regexp-alist '(gnu)))
;; (compile (format "phpcs --standard=PEAR --report=emacs \"%s\""
(compile (format "phpcs --standard=Zend --report=emacs \"%s\""
(buffer-file-name)))))
;; Check code style
(define-key php-mode-map (kbd " ") 'phpcs)

完成以后可以用 快键调用也可以用 命令行调用。
什么 你看不懂? 没有关系 ,看不懂就看不懂吧,早晚能看懂的

vim配合phpcs实现自动语法检查

类归于: PHP, vi/vim — 标签:, , , , maker @ 10:40

在开发过程中, 我们需要保证语法正确, 当然这是基础, 也是必须做到的. 很多时候, 我们还要去遵守一些编码规范, 比如PEAR规则, Zend规则等等, 这样可以让我们写出清晰并且容易阅读的代码, 但是通常来说, 自觉遵守规范是一个很难办到的事情, 所以我们可能需要借助一些辅助方法.

Vim是一款很强大的编辑器, 拥有着可谓无所不能的扩展机制, 这里我简单介绍一下Vim配合phpcs实现自动和手动的语法检查.

什么是phpcs?

phpcs全名PHP_CodeSniffer, 是PEAR中一个用来检测PHP代码规范的包, 他是确保你代码简介一致的必不可少的工具, 并且可以更快的帮你找到语法错误. 关于phpcs的具体安装和使用方法这里就不做说明了, 请各位读者自行查找.

注: phpcs中默认提供了一些编码规范, 在开发过程中我们可能需要一些自己的规范, 可以在phpcs的目录中添加新规范, 规范的编写方法请参考一些内置规范, 规则都是phpcs已经有的, 只需修改声明就可以了.

我们需要扩展vim的功能, 这样需要编写一些脚本, 脚本可以直接加到你的vim配置文件中, 也可以保存成脚本保存在$VIMHOME/plugin/目录下.

下面是脚本内容:

function! Phpcs()
" phpcs 命令的路径和参数, 请根据环境自行修改
! /home/bobhero/Dropbox/project/libphp/bin/phpcs --standard=Zend "%"
cwindow
endfunction
" :w 自动验证语法
autocmd BufWritePost *.php call Phpcs()
" :Phpcs 验证语法
command! Phpcs execute Phpcs()

以上代码添加完毕后重启vim, 然后你就可以在保存文件(:w)的同时自动检查语法了, 还可以在vim中调用Phpcs命令(:Phpcs 注意区分大小写), 我在网上还看见了一些更强大的脚本, 这里就不详细介绍了.

2010-05-21

symfony1.4 DateTime对于PHP低版本的兼容问题

类归于: symfony — 标签:, szn000 @ 13:17

在symfony1.4中使用DateTime 类 但是该类出现于 PHP 5.2.0以后 所以在使用(部分方法需要在PHP5.3.0以后版本才能使用)PHP5.2.0以前版本的服务器上 调用symfony调用该函数会出错 为了解决该类问题根据 PHP5.2.0 的DateTime类 写了俩个类 用以在低版本中使用该类
以重写方法
DateTime.class.php
__construct ([ string $time = "now" [, DateTimeZone $timezone = NULL ]] )
string format ( string $format )
int getOffset ( void )
int getTimestamp ( void )
DateTimeZone getTimezone ( void )
DateTime setDate ( int $year , int $month , int $day )
DateTime setISODate ( int $year , int $week [, int $day = 1 ] )
DateTime setTime ( int $hour , int $minute [, int $second = 0 ] )
DateTime setTimestamp ( int $unixtimestamp )
DateTime setTimezone ( DateTimeZone $timezone )
DateTime __wakeup ( void )

DateTimeZone.class.php
__construct ( string $timezone )
string getName ( void )
int getOffset ( DateTime $datetime )

文件下载地址: 下载点击我
附件使用时把类名中的My删除

2010-05-20

如何在fixtures.yml写循环添加数据

类归于: symfony — 标签:kthiz2006 @ 16:03

举一个简单的例子:
city表的字段有id,enabled,name
那么往city表插入字段的写法如下:

city:
<?php for ($i = 1; $i <= 6; $i++): ?>
city_<?php echo $i ?>:
enabled: 1
name:    city<?php echo $i."\n" ?>//用php写表的字段的数据结尾时一定写上"\n"
<?php endfor; ?>

注意:书写时一定要注意fixtures.yml的写法,注意空格.

2010-05-19

PHP中数据类型间的比较

类归于: PHP — 标签:, , maker @ 15:12

这是由bobhero发现的一个很有趣的问题. 废话不多说, 直接上代码.

var_dump(array() > 9999); // true

结论:任何数组大于整数

var_dump(array() > 'abc'); // true

结论:任何数组大于字符串

var_dump(array() < array('a')); // true

结论:任何非空数组大于空数组, 其实这个应该是所有人都知道的

var_dump('abc' > '123');// true

这个没有结论, 是字符串比较的问题

var_dump('abcasdfad' > 123);// false
var_dump('abcasdfad' > 1);// false
var_dump('abcasdfad' > 0);// false

结论:任何整数大于字符串

以上是实验过程和结论, 刚发现的时候我也是很惊奇的, 不过最终也没弄明白其中的原理, 希望高手指点.

« 较近文章早前文章 »

WordPress 所驱动