首页
学习
活动
专区
工具
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变量 没有被定义! 好了本节课就到这里,怎么样,是不是感觉很简单???

58210

JS的分号可以省掉吗?

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

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

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

    40310

    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

    65320

    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包括,只有两个了刚好够把

    63740

    php编码规范

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

    2.4K40

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

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

    1.2K70

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

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

    1.3K100

    PSR-12 编码规范扩充

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

    809110

    如何提高JSON解析的性能

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

    4.7K20

    leetcode20:有效的括号

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

    36220

    易犯的PHP小错误及相应分析

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

    1.3K70

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

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

    1.7K40

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

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

    1K110

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

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

    86730

    php基本语法复习

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

    23210

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

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

    76950

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

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

    98520

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

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

    89230
    领券