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

2024年,phpstorm 终于支持 log 高亮了

 2024年了。phpstorm 终于支持 LOG 高亮了。

现在用 phpstorm 打开项目里的 log 文件,行号什么的时候 以及代码可以高亮显示,如果在内置终端的命令行用 tail -f 来看日志。你可以看到错误文件和行号可以点击了。点击后会跳到错误对应的行号。。
 
10多年了,终于有这样的功能了。这真是不可思议。在 PHP 即将或者说已经走向没落的时候 ,居然才出类似的功能。
而且这次支持的还挺多:
 

Log files support

Laravel, Symfony, and WordPress log files can now be viewed directly in the IDE with proper highlighting of dates, times, events (by severity level), and hyperlinks.

 
详细的可以查看:https://www.jetbrains.com/phpstorm/whatsnew/
还有专门亚洲语言支持:

Japanese, Korean, and Chinese UI options

Chinese, Japanese, and Korean UI language packs are now included in the base IDE installation.

 
 
 
 
 

有一说一。composer的源,还是阿里最稳定

如题。

本来一直是在用腾讯的,发现腾讯的更新有问题。即使是一个老的库,偶尔还有404的情况。切到aliyun后。一切正常了。
找到个页面,上面有写。腾讯是24小时更新。阿里是96秒(??96秒是什么概念。。。。。)
 
参考:https://cloud.tencent.com/developer/article/1606838,虽然也是普通用户发的文章,就这么一看,图一乐吧
 

laravel的 macroable

 其实有点不想写这个的,但想想还是提一嘴吧,主要是用了这玩意之后,在 phpstorm 下面,不配合 laravel idea 的话,根本起不到太大的作用。安装了 laravel idea 之后。再 generate helper code 后。就可以当成正常的方法用了(当然,即使这么用了,带来的另一个问题就是。。refactor 的时候,不会受影响,毕竟这其实就是数组的一个 key)

 
macroable 的适用场景,官方介绍的更多是象 str / arr /collection 的扩展。而且 macroable 有点象是 trait。给现有类注入一个方法(这点在 yii中其实早就有了。不过macroable 也属于很早的框架,只是叫法不一样罢了。 )
 
macroable 的 mixin 方法,估计很多人很熟悉,是的,vue2的时候 ,也是这样来注入新的方法的。
 
除此之外,我们可能有时候 还会在 Model / Cache 里加入自己的用法。比如标准的 Model,肯定没有 pinyin 这样的方法, 比如我要将标题转为拼音当成 slug 来用,有几种办法:
1、直接写个方法 title2pinyin( $title )
2、在 Post 类里增加一个方法 getPinyinAttribute,返回拼音(如果有多个 Model 里有类似的要求,那要么把这个方法写成 trait,要么一个个复制)
3、Post::macro('pinyin',function(){ return .... 拼音 })

类似这几种方法,不能说孰优孰劣,但如果和 model 相关的操作是被项目的人封装成 composer 的类时,也就1和3可以用了。
 
说实话,要想好好用这个方法,并且形成优势。有时候还真不知道或者真没感觉倒,但这毕竟也能算是曲线救国。想想,如果在 cache 里用。可以 cache()->get('name')->toPinyin(),感觉也还不错。
 

用 laravel11 + Filament 来尝试写博客 (一)

 Laravel 官方在推上说即将推出 Laravel11,这次的推出的版本将以极致的精简,而且去掉了很多原来为了结构而分拆的文件。象 Console/Http 下的 Kernel 文件,全部去掉,而且改 bootstrap/app.php 来实现了,在路由里甚至留了一下 health 。用于其他监控项目来检查服务器是否正常。默认是:http://{hostname}/up,我在本地运行下来,执行时间是39ms,所以我就更加想尝试用11来把我当前的博客重写一下(之前写的时候 ,都是考虑直接使用原来的数据库结构,导致写了几次都发现很不 laravel,所以几次就放弃了)

 
Filament,是一个后台管理项目,基于 livewire 的(关于 livewire,可以查看 https://livewire.laravel.com ),号称是不用写 JS 的后台管理。之所以选择这个,是本来几年前用的是 dcat-admin,然而作者也已经好多年没更新了(这就是使用第三方开源项目的尴尬之处,作者也不太可能用爱发电,如果项目没有赢利或者找不到赢利点,这个项目很可能就无疾而终了)。而选择 filament 也是因为看中了他的生态,有完善的插件平台(有免费和付费插件)。一旦有人购买插件,会促使更多的人使用并扩展(搜了一下,其实有不少类似的,象:splade.dev / tomatophp / nova[官方] ),但目前看下来,好象还在持续更新的就是 filament 了。在推上也能看到 filament 挺活跃。所以选择它做为接下来3年的后台管理。
 
今天就先到这里先介绍一下这两个项目,然后准备开始写,遇到踩坑的地方也会记录一下。
项目开始其实很方便
laravel new blog,就可以初始化项目了。因为考虑到其实暂时不需要前台登录,所以没有用 breeze 和 jetstream。
项目初始化后,运行 composer require filament/filament 就可以安装好filament 了
这时候还要运行 php artisan filament:install --panels。安装完面板后,可以通过安装时指定的路由进行访问(默认是 admin,可以在运行的时候 进行设置)【备注:后期要修改的话,可以在 app/Providers/Filament/AdminPanelProvider.php 中进行调整】
但此时还不能登录,因为没有 breeze 和 jetstream ,所以连注册也没有,此时只能通过 php artisan make:filament-user 来新建一个用户。
此时,filament就已经安装完了。项目正式启动。

 

Tags: laravel, filament

一个#[Modelable]解决了所有烦恼

 在使用livewire的过程中,由于没看文档,浪费了不少时间 ,比如 多个组件在往下传递的时候 ,某个子组件中其实有很多值需要向外变更,但事实上只有一个有效值 需 要向父组件传递。

当然,可以通过event进行传递。但就是因为不想写event,浪费了大量时间 在看wire:model怎么绑定。
 
看了官方的nest-component一章才发现,原来有个#[Modelable]。就是专门用来解决这个问题的。
详细参考:https://livewire.laravel.com/docs/nesting#binding-to-child-data-using-wiremodel
不多说。太长了主要
Records:64512345678910»