首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHPStan和信条:$id从来不是写的,只读的

PHPStan 是一个用于 PHP 的静态分析工具,它可以帮助开发者在代码运行之前发现潜在的错误和问题。PHPStan 通过分析代码的结构和类型信息,提供了一系列的规则和检查,以确保代码的正确性和质量。

基础概念

信条(Doctrine):在这里,信条指的是 PHPStan 中的一条规则或原则。信条 $id从来不是写的,只读的 意味着在代码中,变量 $id 应该被视为只读的,不应该被修改。

相关优势

  1. 提高代码质量:通过强制变量为只读,可以减少意外的修改,从而降低引入错误的风险。
  2. 增强代码可读性:明确的只读变量可以让其他开发者更容易理解代码的意图。
  3. 便于维护:只读变量减少了代码的复杂性,使得代码更易于维护和调试。

类型

在 PHPStan 中,可以通过类型系统来声明变量的只读性。例如,可以使用 intstring 等基本类型,或者自定义类型来明确变量的用途和行为。

应用场景

  1. 数据库主键:在处理数据库记录时,主键(如 $id)通常是只读的,因为它们是由数据库自动生成的。
  2. 配置参数:某些配置参数在初始化后不应该被修改,以确保系统的稳定性。
  3. 函数参数:某些函数的参数应该是只读的,以避免在函数内部被意外修改。

遇到问题及解决方法

问题:为什么 $id 被视为只读的?

原因:PHPStan 通过静态分析发现 $id 在代码中被多次赋值,这可能导致不可预期的行为和错误。

解决方法

  1. 检查赋值点:审查代码中所有对 $id 的赋值操作,确保只有必要的地方进行赋值。
  2. 使用类型声明:在函数参数或变量声明时,明确指定其类型,并使用 readonly 关键字(如果 PHP 版本支持)。
代码语言:txt
复制
function processId(int $id): void {
    // $id 在这里被视为只读
    echo $id;
}

// 错误的示例
function updateId(int $id): void {
    $id = 123; // PHPStan 会警告这里不应该修改 $id
}
  1. 使用属性:在面向对象的编程中,可以将 $id 定义为类的只读属性。
代码语言:txt
复制
class User {
    private int $id;

    public function __construct(int $id) {
        $this->id = $id;
    }

    public function getId(): int {
        return $this->id;
    }
}

通过这些方法,可以有效地遵循 PHPStan 的信条,确保 $id 变量的只读性,从而提高代码的可靠性和可维护性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python文本文件和二进制文件的只读和只写操作

Python能对文本文件(txt,doc,html,xml...)和二进制文件(图片,视频,音频...)进行只读和只写操作,下面就分为两个方面来讲解一下。...一、文本文件的只读和只写操作 首先是文件读写的代码格式:open('文件路径+文件名', '读写模式'); 然后是打开文本文件的方法,主要有三种: 1. r :以只读的方式发开文件,默认模式,文件的指针会放在文件..."开头"位置,如果文件不存在会报错,只读模式 2. w :以只写的方式发开文件,文件的指针会放在文件"开头"位置,所写入的内容会覆盖已有内容,文件不存在会自动创建新文件,只写模式 3. a :以只写的方式发开文件...# w模式写入的文本会覆盖原有全部文本内容 # a模式写入的时候会从文本内容的结尾进行追加写入 # 3.关闭文件 f.close() 二、二进制文件的只读和只写操作 二进制文件需要增加b:表示以二进制的格式对文件进行操作...files/321.jpg', 'wb') content = content[0: len(content) // 2] f.write(content) f.close() 以上是对Python文本和二进制文件的只读和只写操作的讲解

1.2K20
  • 归纳决策树ID3(信息熵的计算和计算原理写的很清楚)

    outlooktemperaturehumiditywindyplaysunnyhothighFALSEnosunnyhothighTRUEnoovercasthothighFALSEyesrainymildhighFALSEyesrainycoolnormalFALSEyesrainycoolnormalTRUEnoovercastcoolnormalTRUEyessunnymildhighFALSEnosunnycoolnormalFALSEyesrainymildnormalFALSEyessunnymildnormalTRUEyesovercastmildhighTRUEyesovercasthotnormalFALSEyesrainymildhighTRUEno 这个问题当然可以用朴素贝叶斯法求解,分别计算在给定天气条件下打球和不打球的概率...现在我们使用ID3归纳决策树的方法来求解该问题。 预备知识:信息熵 熵是无序性(或不确定性)的度量指标。假如事件A的全概率划分是(A1,A2,...,An),每部分发生的概率是(p1,p2,......通常以2为底数,所以信息熵的单位是bit。 补充两个对数去处公式: ? ID3算法 构造树的基本想法是随着树深度的增加,节点的熵迅速地降低。...我们首先要决定哪个属性作树的根节点。 对每项指标分别统计:在不同的取值下打球和不打球的次数。...在已知outlook=sunny的情况,根据历史数据,我们作出类似table 2的一张表,分别计算gain(temperature)、gain(humidity)和gain(windy),选最大者为N1

    2.4K40

    PHPStan :PHP静态代码质量分析工具

    PHPStan 主要用于检测 PHP 代码中的错误,包括语法错误、类型错误、逻辑错误和安全漏洞。它还可以帮助开发者发现代码中可能存在的性能问题和可读性问题。...类型系统: PHPStan 拥有一个强大的类型系统,能够对 PHP 代码中的变量和函数进行类型检查。这有助于开发者发现代码中的类型错误,并确保代码的正确性。...规则集: PHPStan 提供了一套丰富的规则集,用于检测代码中的错误。这些规则集涵盖了各种不同的方面,包括语法、类型、逻辑、安全和性能等。...集成: PHPStan 可以与各种不同的开发工具集成,包括 IDE、文本编辑器和构建工具等。这使得开发者可以在他们的日常开发工作中轻松地使用 PHPStan。...PHPStan 是一款非常流行的 PHP 代码分析工具,它已被许多公司和项目使用,包括 Facebook、Google、Netflix 和 WordPress 等。

    61710

    用于检查和改进代码的PHP代码质量工具

    恐怖和不幸! 你可以让Dave来到你的办公桌前,对他大喊大叫,你从未见过如此蹩脚的代码,诅咒他和他的家人。 但是,既然你是一个尊敬的人,你知道这不是一个好的解决方案。...教学而不是责备总能带来更好的结果。 有了一个禅宗僧人的平静,你首先修复了在戴夫的帮助下驾驶你的老板疯狂的错误。然后,您决定向您的团队介绍一些代码质量工具。...使用插件 neomake, 您可以轻松地将 PHPMD , PHPSTAN 和 PHPCS插入 Vim。它将显示在阴沟警告和错误中。非常便利!...PHPStan(PHP静态分析工具) Github上 PHPStan是您工具箱中的另一个工具。它的目标是?编译时会显示编译语言等输出错误。它是PHPMD的一个很好的补充。...请记住:它们是一个很好的 补充,但不是一个可靠的测试套件的替代品 ,从良好的单元测试开始。 你使用的工具不是这里描述的工具吗?你用不同的方式吗?不要犹豫,通过分享您的经验来帮助社区。

    2.8K20

    怎么样才能不写出别人嘴里的烂代码

    工作换了几次,改过几次别人的代码 "这写的什么玩意,简直是一坨翔,还不如自己重写"。写代码一定时间之后,自己的能力有所提升,接触到的东西越多,逐渐形成一套自己的感性认识。...会一种感觉什么是好的代码,什么是不好的代码,但仅仅是感性层面的认识。 但是,每次当你辛苦重写完之前那套你认为是"一坨翔"的代码之后,你会发现,靠,跑不通了,不是这报错就是那报错。...看事情知道从不同的角度去看了,知道任何事情的存在必定有一定存在的因素。不再是一上来就把别人写的代码重写一遍,更多的是按一定的标准去重构。 重构跟重写是有很大区别的。...工作中整理了一些习惯,避免自己把代码写成一坨翔: 1)不要犯低级的语法错误,尽管不是ERROR级别的错误 这是最基本的,学习一门编程语言,不应该在对外项目代码中有语法错。...可用工具 代码格式化可以用phpcs 代码的低级错误 可以用 phplint,phpstan做代码静态检查 代码设计层面,代码规范上,命名等可以使用phpmd

    57720

    2017金翎奖家用机类获奖作品大观:复古风盛行,系列作常青,唯用心而已(上)

    在情怀当道的年代,“复古”从来不缺乏善于发现它的眼睛,然则复古风情并非是强行放大马赛克的像素方块,矫揉造作的假抒情,愈发精明的玩家眼里可揉不得沙子。...此次与《茶杯头》一同荣膺“玩家最期待的家用机游戏”奖项的还有《刺客信条:起源》《FORZA 7》《最终幻想15:普隆普特章》和《FIFA18》,不难看出均是各自题材领域中的佼楚,并且承载着老牌系列传承与创新的希冀...在本届金翎奖,玩家最期待的刺客信条新作回到了我们的视线,有别于系列近几作在时间轴上的逼近,《刺客信条:起源》直接把眼光投向了远在兄弟会诞生之初的古埃及。...当然,优秀的游戏不止是旅游宣传片这么简单,《刺客信条:起源》大幅革新的战斗系统让游戏更具挑战性,更符合硬核玩家的胃口了;数值化的凸显和升级也给更多RPG爱好者带来了眼前一亮的感觉。...毕竟玩家始终相信刺客信条在风土人情、地域文化、历史渊源上的考究与严谨态度,不会让今后的观光之旅成为鸡肋。 ?

    47960

    别再找黑神话悟空盗版了,现有破解组短时间内很难突破黑神话悟空的加密技术!

    例如《刺客信条:起源》在四核CPU上遇到严重的卡顿问题,而移除D加密后,游戏的加载速度和卡顿频率显著改善 。...而EMPRESS女皇组破解的知名游戏也不算少,他们破解的有:《怪物猎人:崛起》、《生化危机8:村庄》、《生化危机4重制版》、《刺客信条:英灵殿》以及《霍格沃兹之遗》。...介绍完了EMPRESS女皇组以及其战绩,相信大家可以看出其实使用D加密保护游戏也并不是万无一失的。但是他也可以在最大程度上保护游戏商的利益,延缓盗版出现的时间。...回看一整个游戏发展史,游戏厂商与盗版发行组之间的对决就从来没有停歇过,最早的游戏防盗版措施来自1984年发布的《Elite》。...回看这几十年的游戏的发展,我们的版权意识在越来越强,这背后是人均素质和经济水平的不断提升。 尊重正版,抵制盗版。在正版与盗版的战斗中,游戏发行商不是我们的敌人,玩家可能会受益,但绝不会胜利。

    2.5K20

    柯洁夺斗地主全国冠军!斗地主可以排解输棋痛苦”

    是不是感受到了霸气与谦虚并存的高手气质~ 夺冠之路,苦尽甘来 尽管表现得很轻松,夺冠之路向来不是没有障碍。进入决赛前,柯洁的排名是第三名,和前两名分数的差距也不小。 ?...“赢“可以算是柯洁重要的人生信条了,不论面对什么高手,进了比赛,就想着赢比赛,职业棋手向来如此。 ?...围棋是职业,斗地主是排解 无论什么比赛,都奔着“赢“的心情去,只有Al曾经把他在棋盘上杀哭了。 是AI打破了他美梦,这个从来没有怕过对手的“中二少年”遇到了不可战胜的“终极大Boss”。...“小朋友一定不要老打游戏”(虽然不是小朋友,也觉得突然中枪。。。) 今年22岁的柯洁,刚刚入学清华大学,是工商管理专业的大一萌新。...他以“优秀运动员”免试资格入学,和其他攻读清华的著名运动员一样,能够有更灵活的课程安排,在不影响比赛的情况下完成学业。 入学的时候他也曾表示, 希望比赛和学习能够相辅相成。

    94130

    创业公司如何画饼???

    画一张虚无缥缈的饼 大多数创业者都喜欢给员工画饼,画一张改变世界、一步登天的饼。 你是不是对这样的话很熟悉呢?...我相信两个信条:态度比能力重要,选择同样也比能力重要!” "大家最近加班辛苦一点,等我们拿了A轮之后,给大家一人配一台MacBook Pro" 所有的工程师每天早出晚归,终于有了像样的成果。...也许前一两个月由忠实用户带来的销售额蒙蔽了老板的眼睛,飘飘然了,按照目前的速度,年底肯定能完成七百万的目标。但是,不能拿新用户和老用户相比。而且这个饼,对员工影响不算太大,充其量年底的奖金会少一些。...从不画饼的老板不一定是好的创业者 不是所有的老板都会画饼,对于一些浸淫在技术中的老板画饼的不多。他不会跟大家说公司的未来,不会跟大家说融资的情况。他只会默默的写代码,默默的跟工程师们分配任务。...这个需要从上之下的,你想想,如果老板不关心,或是从来不跟员工讲竞聘公司的产品如何如何,那么你还指望低下员工有竞争意识吗? 结果就是,程序员从来不关心对手的产品、功能。老板让做啥样就做啥样。

    1.4K50

    10年前的顶配电脑放到现在是什么水平?

    ,辨别起来特别难,宿舍几个人一起来到中关村大厦,还好宿舍有个人花了一个月的时间专门学习如何攒机,对于写代码的人来讲不是很多大的难事,前前后后把检测期间的真假学习了十几天,然后进入大厅里就被各种商贩拉住,...发生过很多起为了争客源而打架的事情,那个时代的中关村鼎沸而杂乱,当初的信条就是一定要坚持住自己信念,不要被那些商贩带沟里去,于是一行三个人带着各自的配置单,找到了一家组装电脑的店,开始老板也是个各种推荐和忽悠...,结果发现我们几个人软硬不吃,知道不是外地人来配置电脑的人,于是按照我们列出的订单开始配置,剩下问题就比较简单了,鉴别拿到的各个部件进行检测,很快三台电脑就出炉了。...块,当时还珍惜的不得了,弄回宿舍一用就是十几年,直到两年前的离开北京,因为不方便邮寄最后用100块卖给了收废品的,完成了十几年的历史使命,在这差不多十年间这个电脑倒是很争气,从来没有换过一次大件,只是升级了下内存以及硬盘...,现在开发的桌面软件都有一个心理反正电脑的配置高,多消耗点内存和cpu没啥关系,大家都这么想,结果电脑依然很卡。

    1.6K20

    赶快入手12代酷睿,畅享性能飞升体验!Acer掠夺者战斧300笔记本评测

    和之前的处理器相比酷睿12代绝不是一次简单的升级,酷睿12代采用大小核设计,其小核拥有5000个条目的分支目标缓存区,实现更准确的分支预测;并将指令缓存扩冲到64K;簇乱序执行解码器,可在保持能效的同时...不过在上了各种工具实测之后,我们可以从结果中看到,在性能方面酷睿12代I7的表现不是小好,而是大好。...待机恢复:在测试中我不断给笔记本作着开关动作,中间的时间间隔也不固定,而该笔记本的恢复速度总是保持在2秒中之内即可完成,而且从来没有死锁现象。...《刺客信条7》 ​ 编辑切换为居中 添加图片注释,不超过 140 字(可选) 《最终幻想:起源》 ​ 编辑切换为居中 添加图片注释,不超过 140 字(可选) 可以看到刺客信条的运行帧数稳定在100...最为关键的是在运行如此大型的游戏时,CPU的功耗和温度还能始终保持在一个相对比较理想的位置,在我室温23度的情况下,连续玩1个小时的《刺客信条》 CPU温度也只短暂升到过90度,功耗也在打开TURBO模式时达到过

    89520

    “傻瓜式”的统计分析工具来了,还能一键绘图...

    每一个工具下都有视频演示,小编听后感觉讲得真是接地气,言简意赅,从来没有像这次对统计方法的选择有这么一个清晰的理解。...从下图你可以很直观地看到实际U检验结果和t检验结果是相反的,用错方法那结果就是反了的。 ?...做完统计,画完图,那文章里的方法学怎么写呢?...大家知道科研者之家的“杠把子”就是其AI写作助手了,写一句地道的英文,基本上平均50秒,极大地提高了大家的SCI写作效率,比如要写一句“呕吐是临床肿瘤化疗的一种常见副作用”,感受下下面的动图。 ?...而最近其推出的成本价Crosscheck自助查重,价格只有目前市场价的1/5,更是圈粉无数。 听说科研者之家的信条是”科研不停,神器不止”。 很期待科研者之家下一个神器是什么。

    1.1K10

    机会真的多吗?

    二战后的经济崛起是因为抓住了电子产品工业和汽车工业的发展契机,而衰落是因为与互联网经济擦肩而过,在互联网的初期没有布局,结果被美国一举超越,后面则是一步差,步步差。...这里且不说区块链到底是不是机会,就算把它当作一次机会,你说机会多吗?显然机会并不多,三十多年才等来这一次机会。 为什么计算机时代的风云人物大部分都出现在上世纪六十年代?...好在现在大部分人也能理解“心灵鸡汤”和“现实”之间的差别,也能平衡好梦想与实干这之间的关系,不会一味地追求“有准备就会有机会”的信条,不会因为有了准备没有得到机会而沮丧,时代的进步让人变得越来越成熟,越来越通透...显然,那已经不是机会,那已经成为传说。 机会多吗?机会其实从来都不多,也不是准备好了,就一定会有机会,一个国家的崛起需要几代人,甚至几个世纪才能获得一次机会。...而在人的一生中,能够遇到的,真正改变人生的机会不会超过三次,即使这样的三次机会,也是要取决于天时和地利。 与是否能抓住机会相比,识别机会的能力显得更重要。

    72450

    互联网金融新大陆:征信脱网的5亿陌生人

    央行征信中心副主任王晓蕾直接指出,中国的征信系统目前覆盖了8亿人,但其中5亿人从来不向银行借贷,换言之,这5亿人对于金融部门来说是陌生人,这对于所有的放贷机构都是机会。...中国的征信系统目前覆盖了8亿人,但是在这8亿人里,真正和银行有信贷关系的只有3亿人,换句话说,5亿人跟银行从来没有信贷交易关系。...征信条例明确规定,所有的放贷机构(不是放贷金融机构)都应该接入征信系统。...如果有个监管部门能够认定P2P是放贷机构,或者是从事放贷业务的机构,那么按照征信条例要求,把这些机构接入征信系统是征信中心的法律责任。...而不是“大数据”所指的非结构性,比如一个人的朋友圈、一个人平时的聊天记录等。 如果没有一个大家公认的比较客观、可靠的评级,那么贷方获取借方信用的成本非常高。

    42450
    领券