手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:PHP

Yii2自定义组件在phpstorm中识别

 有时候你会在Yii2中自定义一些组件,比如:Yii::$app->sms / Yii::$app->chat / Yii::$app->queue(你看,这个虽然是系统自带的,但不代表就能被认得出)

那怎么办?IDE无法认出的时候,难道我们一个个的写:

PHP代码
  1. <?php  
  2. /** @var IM $im */  
  3. $im = Yii::$app->im;  

如果是这样,那也太累了。翻了一下google,找到这一篇教程:https://github.com/samdark/yii2-cookbook/blob/master/book/ide-autocompletion.md,意思就是说,你自己建一个Yii的文件,创建一些类,然后把刚才的Yii::$app->sms之类的,注释成类的property,然后IDE就能识别了。

最后找到一个项目:https://github.com/iiifx-production/yii2-autocomplete-helper,看样子好象一位俄罗斯大佬写的,嗯,它自动根据你的config来生成一个类似的_ide_components.php,并建议你在IDE里将Yii.php设置为:Mark As Text,这样IDE就不会主动去读Yii.php并识别了。

于是我composer引用了并执行了一下。然后在.gitignore里忽略了_ide_components.php,感觉世界一下子清静多了。

简单用法:

PHP代码
  1. 'bootstrap' => ['log''autocomplete'],  
  2. 'components' => [  
  3.     'autocomplete' => [  
  4.         'class' => 'iiifx\Yii2\Autocomplete\Component',  
  5.         'config' => [  
  6.             '@app/config/console.php', # <-- config list  
  7.             '@app/config/web.php',  
  8.         ],  
  9.     ],  
  10.     # ...  
  11. ]  

 

 

 

Yii2使用自定义jQuery

 Yii2自带的jQuery随着版本一次次的更新,其实也都在每次调整,但事实上为了兼容旧版,我们有时候不需要这么新的jquery.js,这时候,怎么办?其实只要用assetManager对jqueryAsset进行一个覆写就行了。

比如这样:
PHP代码
  1. 'assetManager'=>[  
  2.     'bundles' => [  
  3.         'yii\web\JqueryAsset' => [  
  4.             'sourcePath' => null,  
  5.             'basePath'   => '@webroot',  
  6.             'baseUrl'    => '@web',  
  7.             'js'         => [  
  8.                 'js/jquery.js',  
  9.             ]  
  10.         ],  
  11.     ],  
  12. ]  
是不是很简单?

composer初装需要执行的几个命令

注:以下技巧在composer2下面已经没必要了。!!!!!

升级成composer2吧,全解决了

------------- 

 

 

 

因为我一直用Yii2框架。所以安装composer和安装后需要执行的命令如下,【纯记录】

1、下载composer
composer下载(具体详细的还需要:https://getcomposer.org/download/ ,必须 sha 还是经常会变的,鉴于可能经常会变所以注释掉了第二行)
  1. php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"  
  2. #php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
  3. php composer-setup.php  
  4. php -r "unlink('composer-setup.php');"  
  5.   
2、mv composer.phar /usr/local/bin/composer  #移到系统目录,变成全局命令
3、composer config -g repo.packagist composer https://packagist.phpcomposer.com    #国内源
    phpcomposer好象垮了!
    更新为:composer config -g repo.packagist composer https://packagist.laravel-china.org 
4、composer global require hirak/prestissimo   #多线程
5、composer global require "fxp/composer-asset-plugin:^1.4"   #升级为1.4
6、composer update -vvv  
 
就这样了 
 
合并后的命令
XML/HTML代码
  1. php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"      
  2. php composer-setup.php      
  3. php -r "unlink('composer-setup.php');"      
  4. mv composer.phar /usr/local/bin/composer    
  5. composer config -g repo.packagist composer https://packagist.phpcomposer.com      
  6. composer global require hirak/prestissimo     
  7. composer global require "fxp/composer-asset-plugin:^1.4"     
  8. composer update -vvv    
  9. #over    
 
如果采用了git,记得在运行完clone后:git config credential.helper store  ,可以将当前用户名和密码存下来(针对HTTP方式,如果是ssh本来就不需要)
 

移植Blade到Yii2

这回移植的比较彻底。当然也是先使用了网上的代码。不然的话,我初期的一些基础性的东西也要重写

1、写了一些简单的方法,比如yUrl,yRequest,yUser等,然后因为是laraval的玩意,里面有一个方法app(),不得已我重写了一下!否则有部分代码就没法实现了。其实也可以用yHtml来整体替换Html::的。但最终没有这么做。。yHtml =》 app('yii\??\Html')的调用罢了(不多写。记不住详细 代码)
2、引入了皮肤概念。网上的一些代码默认应该都是不支持theme的。正好我有项目要用到theme。不得已,再次加入。同时支持module里的调用(笑哭)
 
目前有小部分还是以硬编码的形式存在。
最后。因为尝试部分代码使用vue,就遇到了{{}}的冲突。其实blade默认就支持@{{}}来解决冲突(只要是vue的变量,就必须 是@{{}} )
 

simplepie解析爱范儿的RSS出错

 用Simplepie解析爱范的源时,出现如下错误:http://www.ifanr.com/feed is invalid XML, likely due to invalid characters. XML error: Invalid character at line 604, column 37,比较麻烦。

 
最后在Simplepie的代码的1397行里加入:
XML/HTML代码
  1. $this->raw_data = preg_replace('/[^\P{C}\n]+/u','',$this->raw_data);  
说实在的,这种不可见的字符最TMD恶心了!~