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

为什么PHP代码以右大括号开头没有显示错误?为什么要这样做呢?

PHP代码以右大括号开头没有显示错误是因为PHP解析器在解析代码时会忽略开头的右大括号。这种做法主要是为了兼容早期版本的PHP语法规范。

在早期的PHP版本中,允许在代码块的开头使用右大括号,而不会报错。这种语法设计的初衷是为了方便在代码中插入动态内容,比如在HTML模板中嵌入PHP代码。由于HTML模板中以右大括号开头的代码块较为常见,为了简化语法,PHP解析器允许了这种写法。

然而,随着PHP的发展,这种语法规范逐渐被废弃,不推荐在新的PHP项目中使用。现代的PHP开发中,建议使用标准的PHP语法规范,即以左大括号开头的代码块。

虽然在旧的PHP版本中以右大括号开头的代码块不会显示错误,但这种写法容易引起代码可读性和维护性的问题。因此,在编写新的PHP代码时,应该遵循标准的语法规范,以左大括号开头的代码块。

腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):提供弹性、安全、可靠的云服务器实例,支持多种操作系统。详细信息请参考:https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版(CDB):提供高性能、可扩展的关系型数据库服务,适用于各种应用场景。详细信息请参考:https://cloud.tencent.com/product/cdb
  • 云函数(SCF):无服务器计算服务,支持事件驱动的函数计算,实现按需运行。详细信息请参考:https://cloud.tencent.com/product/scf
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

《跟热饭一起学习vue吧》Par.1 安装与启动

1.什么是vue,为什么学习? 答:写前端用的,完成各种各样的交互,挺流行的,别人都用,我也要用!找工作也好找! 2.vue难不难? 答:什么技术都是难者不会,会者不难!只要勤练,自然能学会!...然后具体要控制它的事或者说这个标签块的设置代码在哪?...那么这段bom区的代码怎么控制dom区的元素块?当然就是靠元素块的id来关联上,关联上就能控制了。...所以就会看到我们右侧的结果显示窗口,显示: 我们可以自己尝试,修改message的值,然后点击运行,会发现右侧结果展示的也会变化。 那么如果你的变量名不对,会怎样?...这个错误很明显: 说我们的message变量 没有被定义! 好了本节课就到这里,怎么样,是不是感觉很简单???

56010

JS的分号可以省掉吗?

背景 最近在项目中开始使用新的编码规范,一开始ESLint报一大堆错误,改得我想砸键盘,花了好些时间才适应,下面列出一些代表性的规则: 只能使用单引号 函数定义的圆括号和左大括号之间一定要有空格: function...因为没有报错信息,无法推测具体原因。于是,我将其抽象成非常简单的代码来排查。...这么简单的代码为什么会出错?第一反应就是JS引擎将代码生成语法树的时候,可能解析不正确。于是,我在第一行末尾加分号测试。...("hello, fundebug"); [1, 2, 3].map(i=>console.log(i)) 程序正确执行了: [passed.png] 这让我更加犯难,如果不加分号会导致程序出错,那么为什么还会推崇这样的编码规范...如果你不想用分号,又怕出问题,v2ex上有位童鞋给出了一个速记方案: 如果你写 JS 代码不喜欢带分号,而又搞不清什么时候必须加分号,可以这么:在以 "("、"[" 、"/"、"+"、"-" 开头的语句前面都加上一个分号

9K60

为什么 Eslint 可以检查和修复格式问题,而 Babel 不可以?

说起来,Babel 也是基于 AST 实现的代码分析和转换,但是却不能检查和修复格式的问题,这是为什么为什么 Eslint 可以检查格式而 Babel 不可以?...当然我们还可以进一步检查一下大括号 { 和前一个 token 之间有没有空格。...为什么 Eslint 可以检查格式 Babel 不可以 我们写了一个检查大括号格式的 rule,可以发现能够格式检查关键是能找到关联的 token。...其实 Babel 和 Eslint 原理差不多,但是 Eslint 是被设计来代码错误和格式检查与修复的,而 Babel 是被设计用来代码分析和转换的,目的不同,所以也就提供了不同的 api,能够不同的事情...总结 Eslint 是用来检查代码中的错误和格式问题的,基于 AST,Babel 也是基于 AST 代码分析和转换,但是却不能检查格式。

35810

Genesis框架从入门到精通(4):框架的内置动作(续)

使用自定义的函数 Genesis的函数是很好用,但是如果当你想在网站上添加其他内容时?你自己写一个函数,并使用add_action()把它挂载到某一个钩子上。...单词“function”是第一部分,它告诉php“记住这个函数,后面要用到”。“generic”是函数名,这样你就可以用这个名字来调用代码并执行,而不是每次都要写同样的一大啪啦的代码。...函数部分以右大括号“}”结束,因此php引擎知道在哪里停止。 这就是一个完整的函数了,但是你可能会想“我又不懂php,就会点html和css,这玩意对我没啥用”,就像我刚开始学的时候一样。...正常情况下,这个插件很容易集成,可以自动运行,但是假设你想在文章信息旁边的位置显示。插件的安装说明说通过编辑器将一些代码添加到模板文件中。 <?...可以这样 add_action( 'genesis_after_post_content', 'child_do_add_to_any' ); /**add the add to any function

62620

PHP+MYSQL分页最终章6

php //设置级别错误,通知类除外 error_reporting('E_ALL&~E_NOTICE'); /**1---传入页码,使用GET获取**/ $page...,思维是什么,是如果总页数大于显示的页码5的话,就里面的核心是隐藏哈,隐藏的方式是… if($page>$pageoffset+1){ $page_banner...,为什么,因为保持左右2个啊,3那里不是左右两个吗是吧如果按下的是2就不要管,为什么,因为如果前后如果某一个超过两个就不要管,符合条件,为什么,因为大于2啊。...后面的不要急,后面有啊 如果点击的等于大于3的话,就是开头就是1,3开始为1,...4为开头为2 如果点击的大于小于等于2的话,就开头为1结尾为5,为什么不是3,因为之前已经算3等同大于之后的开头与结尾数了...,为什么,因为total_pages>$page+$pageoffset这里最大是12,为什么,因为点击是小于等于10了就会出现...,否则不会出现.,为什么,因为11包括,只有两个了刚好够把

62540

php编码规范

错误返回检测规则  · 检查所有的系统调用的错误信息,除非你忽略错误。  · 为每条系统错误消息定义好系统错误文本以便include。...这样的其中一个原因就是人们不喜欢做一个小库,对小库有一些不正确感觉。把这样的感觉克服掉吧,电脑才不关心你有多少个库。 ...归档注释 注释的归档才有意义,否则,假如在一个地方放一条注释描述你做了什么选择和你为什么这么,只有考古学家才能发现这是最有用的信息。(如何归档另行规范) 5.3....理由 o 需要说明的是我们工作的上游,页面设计者的工作,假如在页面中穿插代码,将破坏结构,这应当是我们需要避免的。 o 在这里的PHP代码只负责显示,多余的代码显然是不应该的。...使用不可思议的数字是该程序员是业余运动员的重要标志,这样的程序员从来没有在团队环境中工作过,又或者是为了维持代码而不得不做的,否则他们永远不会做这样的事。

2.4K40

对5种主流编程语言的吐槽

另外,还有设备驱动程序、嵌入式程序以及Linux/Unix代码库的维护工作——好了,这个忧伤的话题到此结束。 接下来轮到最开心的环节,!开!始!吐!槽!...为什么这样,谁叫它们总是用小括号、中括号与大括号包裹着自己!...接下来轮到最开心的环节,!开!始!吐!槽!哈哈~JavaScript的缔造者们希望打造一款现代化语言。遗憾的是,他们的成果逼迫我们不断使用小括号、中括号与大括号来完成正确的嵌套关系。...谁还会记得false、 null、NaN以及undefined之间的区别?它们听起来很像,但JavaScript为什么非要对此进行区分?为什么不能把它们合并起来? 3.PHP ?...一部分新型代码及库无法在旧有虚拟机上运行。我就经历过这样的困扰,事实上Java 1.4之后的每个版本都像是一种完全不同的语言。 但这一切都不重要。

1.3K100

PSR-12 编码规范扩充

如果这样,第一个条件 必须 在新的一行。右括号和左大括号 必须 在同一行,而且中间有一个空格。条件中间的布尔控制符 必须 在每一行的开头或者结尾,而不是混在一起。 1<?...如果这样,第一个条件 必须 在新的一行。右括号和左大括号 必须 在同一行,而且中间有一个空格。条件中间的布尔控制符 必须 在一行的开头或者结尾,而不是混在一起。 1<?...如果这样,第一个条件 必须 在新的一行。右括号和左大括号 必须 在同一行,而且中间有一个空格。条件中间的布尔控制符 必须 在每一行的开头或者结尾,而不是混在一起。 1<?...如果这样,第一个条件 必须 在新的一行。条件中间的布尔控制符 必须 在每一行的开头或者结尾,而不是混在一起。 1<?...如果这样,第一个条件 必须 在新的一行。右括号和左大括号 必须 在同一行,而且中间有一个空格。 1<?

743110

对5种主流编程语言的吐槽

另外,还有设备驱动程序、嵌入式程序以及 Linux/Unix 代码库的维护工作——好了,这个忧伤的话题到此结束。 接下来轮到最开心的环节,!开!始!吐!槽!...为什么这样,谁叫它们总是用小括号、中括号与大括号包裹着自己!...接下来轮到最开心的环节,!开!始!吐!槽!哈哈~JavaScript 的缔造者们希望打造一款现代化语言。遗憾的是,他们的成果逼迫我们不断使用小括号、中括号与大括号来完成正确的嵌套关系。...谁还会记得 false、 null、NaN 以及 undefined 之间的区别?它们听起来很像,但 JavaScript 为什么非要对此进行区分?为什么不能把它们合并起来?...一部分新型代码及库无法在旧有虚拟机上运行。我就经历过这样的困扰,事实上 Java 1.4 之后的每个版本都像是一种完全不同的语言。 但这一切都不重要。

1.1K70

leetcode20:有效的括号

为什么要用栈解决? 核心:越靠后的左括号对应的右括号就越靠前。越靠前的左括号对应的右括号就越靠后。 因为比如{[]}的话,左大括号在最前面,但是却是最后一位出来的。...为什么,因为还没有没有用什么啊。 扫描字符串,为什么? 因为不扫描做什么啊。 栈顶? 数组的最后一位。 如果右括号与栈顶(最后一位)匹配?什么意思?...比如是这样的啊。 问题? 如果字符数是偶数还能判断吗? 不能,为什么,因为不能完全匹配就是false的....右括号进栈吗? 不需要,为什么,因为他只是用来匹配用的啊. 不需要进栈。 而且代码没有代码是进栈的啊。 栈顶是什么? 最后一位数组,那是什么? 是栈开头的哪一个. 也就是左括号....如果栈顶与右括号匹配就出栈.也即是说开头的与从什么开始的右括号匹配就欧克了。 i=0开始length-1结束。 如果没有匹配的就false。 如果字符里没有字符的话,就说明length为0;

34320

易犯的PHP错误及相应分析

搞清楚编译器为什么会报告某一行上存在错误,首先必须明确编译器解析PHP代码的机制。...另外就是,没有使用大括号( } )结束一个函数或者一个循环,比如: function UselessFunction() { for($i < 0; $i < 10; $i++){ }...on line 9 由于函数 UselessFunction 没有使用大括号( } )来结束,PHP编译器会不断查找表示结束的大括号直至到达文件末尾为止。...因为编译器未找到一个匹配的大括号,就会报告文件末尾处有错误。 如果正确地反映了代码的层次结构,错误信息就会变得非常明显。否则,代码调试起来就会非常的困难。...,程序将跳过include语句,虽然会显示错误信息但是程序还是会继续执行。

1.3K70

如何提高JSON解析的性能

但是在不同的编程语言之间数据通信,就比较麻烦了。比如,一种语言按照自身的标准规范输出了一份数据,另一门语言接收到时需要按照自身编程语言标准进行对齐。...对齐一门语言的数据或许还没啥,但是如果对接的语言多了,你就需要写很多份能够与之对应的数据对齐转换代码。编写和维护的成本可想而知,那么目前有没有一种通用,而且各个编程语言都能够支持的数据格式?...如上语法图所示,对象是以左大括号开头和右大括号结尾,名字后面跟冒号,名字/值对用逗号分隔。...可以看到,数组是以左中括号开头以右中括号结尾,值以逗号分隔。数组代码如下所示: [[7,11,21]] 语法图中,值的语法图如下: ? 可以看到,值可以是字符串、数字、对象、数组、布尔值、空值。...那么,有没有比原生的NSJSONSerialization解析性能更好的JSON解析方法

4.6K20

深入理解PHP原理之异常机制

让我们从一个问题说起, 上周的时候, blue5tar提了一个问题:”对于下面的代码, onError明明执行了, 但是onException却没有执行, 为什么?”. <?...所以, 在onError中, 只能捕获到第一个WARNING错误, 而在onError中抛出的异常, 为什么没有被默认exception_handler捕获? 这就要说说PHP的异常机制了....下一条执行的op line序号 = 当前op array的最后一条} 恩, 就和改写ip寄存器一样, 改写下一条执行的op line的序号, 就改变了程序的流向, 这样, 就会进入到了ZEND_HANDLE_EXCEPTION...了解到这些, 我想文章开头的问题的为什么? 也就很清晰了吧?...最后, 关于ZEND_HANDLE_EXCEPTION, 也许有同学会有疑问: 如果是这样, 那为什么每一个可独立执行的op array最后都有这个ZEND_HANDLE_EXCEPTION?

986110

Python编程思想(2):Python主要特性、命名规则与代码缩进

如果是这样的话,我们就没有办法准确地得知这个变量所对应的类型中的成员。这也是为什么现在几乎所有的支持动态语言的IDE的用户体验都不如支持静态语言IDE的原因。 那么什么是弱类型语言和强类型语言?...这么,从技术上当然是没有问题。但这是一个编程语言的变化禁区。因为一旦这么变化,那么现存的Python程序真的会出问题。还是用上面的代码,这么变化的后果就意味着后3行代码将全部出错。...protected的变量,可能是Python解析器并没有这样的限制; 如果类中的变量以双下划线(__)开头,如__value,是private类型的变量,只允许自身访问; 2....其他的编程语言都是通过大括号来指定代码块的,而Python是通过缩进来指定代码块的。代码块的缩进可以任意,但同一个代码块中的每一行代码的缩进必须一致。...该例包含了类作用域和方法作用域,作用域以冒号(:)开头,后面作用域中的代码的缩进一致,否则程序会报错。关于类的详细解释,会在后面的文章中详细讲解。

81930

宝塔面板phpMyAdmin未授权访问漏洞是个低级错误吗?

官方这些动作的原因 其实各位看官看到这里肯定脑子里还是一团浆糊,这些代码究竟意味着什么为什么官方要将认证模式改成config模式?...这是很多漏洞分析文章的通病,这些文章在出现漏洞后跟一遍漏洞代码,找到漏洞发生点和利用方法就结束了,并没有深入研究开发为什么会这么写,那么下次你还是挖不出漏洞。...这就是为什么宝塔要在7.4.2增加phpmyadmin有关的视图的原因,这个视图就是一个phpmyadmin的代理,的事情就是转发用户的请求给php-fpm。...漏洞复现 此时我们应该还有个疑问:既然官方目的是“直接在python层面用户认证,和宝塔的用户认证进行统一”,那么仍然是有认证的呀?为什么会出现未授权访问漏洞? 我们可以来复现一下这个漏洞。...如果一个未认证的用户,直接访问http://ip:8888/phpmyadmin/index.php?会被直接重定向到登录页面: ? 如果仅仅是这样,这个过程是不存在漏洞的。

1.4K40

php基本语法复习

变量的创建 php没有创建变量的命令 变量会在首次赋值时被创建 如果为变量赋值为文本,用引号包围该值 变量的引用 变量的引用也需要加‘$’ 取数组中的某一个元素加大括号{数组[index]} PHP...> 常量 常量是单个值的标识符,脚本中无法改变该值 有效的常量名以字符或下划线开头,(常量名称前面没有$符号) 设置php变量 define()函数,一共三个参数 首个参数定义常量的名称 第二个参数定义常量的值...和label2时执行的代码 } 如果没有case为真,才使用default while循环 while只要条件为真,循环执行 do while先执行一次代码块,然后只要指定条件为真,则重复循环(先一次...> 函数 php真正的力量,来自于它的函数,php拥有超过1000个内建的函数 用户定义函数 以单词function开头 function functionname(){ 被执行的代码; } 函数名对大小写不敏感...$_SERVER[“PHP_SELF”]将表单数据发送到页面本身,而不是跳转到另一张页面,这样用户就能在表单页面获得错误提示信息 表单验证 验证名字 检查name字段是否包含字母和空格,如果name字段无效

17410

Java基础-Java基础-02总结关键字,标识符,注释,常量进制,变量数据类型

并且,在同一个大括号内不能同时定义同名的变量。 B:初始化值 没有初始化值的变量不能直接使用。 你只要在使用前给值就行,不一定非要在定义的时候立即给值。 推荐在定义的时候给值。...思考题2:看看下面两个定义有没有区别?...为什么? b = b1 + b2;是有问题的。 因为变量相加,会首先看类型问题,最终把结果赋值的也会考虑类型问题。...} } C:下面的操作结果是什么? byte b = (byte)130; /* byte b = 130;有没有问题?如果我想让赋值正确,可以怎么?结果是多少?...为什么? 可以。因为java语言中的字符占用两个字节。 Java语言采用的是Unicode编码。

73350

Java基础之关键字,标识符,注释,数据类型

注释的作用: A:解释说明程序,提高了代码的阅读性。 B:可以帮助我们调试程序,定位到哪行错误。 变量 在程序的执行过程中,其值在某个范围内可以发生改变的量。...并且,在同一个大括号内不能同时定义同名的变量。 B:初始化值 没有初始化值的变量不能直接使用。 你只要在使用前给值就行,不一定非要在定义的时候立即给值。...并且,在同一个大括号内不能同时定义同名的变量。 B:初始化值 没有初始化值的变量不能直接使用。 你只要在使用前给值就行,不一定非要在定义的时候立即给值。...为什么? 同理的话:float c1 = 2.22f, c2 = 2.33f,c; c = c1 + c2; 这个会有问题吗?...如果我想让赋值正确,可以怎么?结果是多少?

38221

40+个对初学者非常有用的PHP技巧(一)

今天我们介绍一些关于改善和优化PHP代码的提示和技巧。请注意,这些PHP技巧适用于初学者,而不是那些已经在使用MVC框架的人。 ? 1.不要使用相对路径,定义一个根路径 这样代码行很常见: ?...在开发计算机上,你可以这样: ? 并且在服务器上,你可以这样: ? 4.通过会话传播状态消息 状态消息是那些执行任务后生成的消息。 ? 这样代码很常见。使用变量来显示状态信息有一定的局限性。...以上代码可以应用到很多地方让你的代码更加灵活。 6.省略结束的php标签,如果它是脚本中的最后一行 我不知道为什么很多博客文章在谈论php小技巧时省略这个技巧。 ? 这可以帮助你省略大量问题。...举一个例子: 类文件super_class.php ? 现在看index.php ? 你会得到发送错误的Header。为什么?因为“超级多余字符”,所有标题都去处理这个去了。于是你得开始调试。...发送输出给浏览器,并在同一时间php处理并不是好主意。你见过这样的网站,它有一个Fatal error在侧边栏或在屏幕中间的方框中吗?你知道为什么会出现这种情况吗?

97520
领券