php全局变量和局部变量

显然,PHP 中的变量是按作用域来划分的,就像生活中的不同房间一样,有些是公共的,有些是私人的。
全局变量就像客厅的柜子,任何房间的任何人都可以打开;而局部变量就像卧室的抽屉,只能在房间本身找到。
其实很简单。
主要观点如下:
让我们首先讨论最重要的观点。
全局变量是在函数或类之外定义的,可以在任何地方找到,就像客厅的柜子一样。
去年我们公司的项目中,全局变量被使用了大约3 000次,几乎每个函数都会访问它们。
一开始我以为这个很简单,但是后来我发现这是错误的。
很容易造成命名冲突,让数据流转难以追踪,就像客厅柜子里乱七八糟一样。

还有一点就是局部变量只在它们所属的函数或者类中有效,就像卧室的抽屉一样,非常安全。
在编写类时,我经常使用局部变量来封装一些逻辑,以避免外部干扰并提高安全性。
还有一个更重要的细节。
当局部变量和全局变量同名时,局部变量会覆盖全局变量,就像你在一个房间里找东西一样,如果找不到,你可以去另一个房间找。

一开始我以为全局变量和局部变量没有什么大问题,但是后来发现它们在代码中的作用非常大。
等等,还有一件事,像 $_GET 和 $_SESSION 这样的超全局变量,这些就像家里的公共区域。
尽管它们也是公共的,但其范围更加有限,只能在某些情况下使用。

总之,最佳实践是先使用局部变量,必要时才使用全局变量,并提供全局变量命名约定,这样不仅可以提高代码的健壮性,还可以让代码更易于维护。
你怎么认为?您是否遇到过由变量范围问题引起的大问题?

php中声明变量注意事项有哪些

哎,听你讲这么多PHP变量,我立刻就想起上次帮同事修改代码的时候……他直接把变量名“u”当成数组使用,结果整个程序就炸了。
我花了很长时间才弄清楚,我很生气!
我们先来谈谈最重要的事情:不要太纠结于命名变量。
像 $user_name 和 $_temp 这样的事情是很严重的事情。
它们必须以字母或下划线开头。
最后您可以添加字母数字下划线。
你见过有人以数字开头吗?绝对不是!您还需要区分大小写字母。
例如,$var 和 $Var 是完全不同的东西,PHP 并不关心它们。

赋值:声明后记得赋值。
比如$count计数器首先必须等于0,否则会默认为NULL,用起来很乱。
PHP 是一种弱类型语言。
您不必担心 int 或 string。
分配值后,系统会自动为您分类。
那很好,对吧?但有时您需要手动更改类型,例如例如。
(int)$var,否则在算术运算中混合字符串和数字时很容易出现问题。
范围是最烦人的。
函数内写入的变量不能在外部使用,外部写入的变量也无法检索。
上次我在上海做一个商场项目时,由于这种危险,我忘记使用全局作为一个非常重要的配置变量。
结果整个主页都是乱码,客户要解雇我。
后来只能在函数中使用global$conf来挽救局面;还有超全局数组 $GLOBALS。
虽然可以用,但是还是尽量少用,这样会让代码变得很乱。

考虑常量:define("MAX_SIZE", 1 00);一旦定义就不能更改,并且全部为大写字母。
最好对配置文件中的地址和端口等不可变的内容使用常量。
它们很容易更改,您不必担心被作业意外覆盖。

应该区分NULL值和布尔值等特殊值。
例如 0、空字符串“”、false 和 NULL。
这些值有时会很混乱,尤其是ZERO和0,做判断时要特别小心。

超级全局变量 $_GET 和 $_POST 内置于系统中。
不要自己给它们起 $_data 这样的名称,因为这会直接与它们冲突。
另外,这些魔术常量 __LINE__ 和 __FILE__ 永远不应该用作变量名。

最好的习惯是什么?即在声明变量时直接赋值初始值!示例:$result = "";, $count = 0;这绝对可以避免NULL值带来的问题。
尝试在函数中使用局部变量。
全局变量越少越好,否则代码变得复杂时会变得混乱。
使用的常量越多,代码就越不容易出错并且更容易维护。

想一想:如果每次写变量的时候都记住这几点,一定会省去很多麻烦。
顺便说一句,还有变量前缀,例如 $userName 或 $user_name。
只需在期间握住它们整个项目保持一致。
不要使用驼峰和下划线。

无论如何,你可以找到答案。
这些都是我总结的。
我希望它们对你有用。
如果您还有任何疑问,尽管问我!

php中的$什么意思

记得有一次,我正在写一个简单的用户注册系统,并使用PHP进行后端处理。
当我处理用户名时,我不小心将变量名全部大写。
结果调试了半天,发现原来是变量名大小写的问题。
变量名必须是$userName,我写成$USERNAME。
当时我真的很困惑,几乎错误地认为代码有问题。
然后我意识到 PHP 中的变量名称是区分大小写的,并且我犯了一个常见的错误,即不遵循变量命名约定。
如果我在名称中使用小写字母和下划线,例如 $user_name,就不会发生这样的错误。
还有一件事,我突然想到现在很多编程语言都是区分大小写的,比如Java、C等,看来这个规则在编程中还是蛮常见的。

解决WooCommerce API GET请求购物车为空:变量命名规范是关键

说白了,WooCommerce API GET 请求购物车是空的,归根结底是变量名错误。

首先,最重要的是PHP变量是区分大小写的。
我们去年跑的电商项目就是因为自定义代码使用了小写的$cartitems,而WooCommerce的内部逻辑期望的是小写的驼峰式$cartItems,所以数据出错了。
POST请求看似成功,但是GET请求根本找不到这个变量,直接返回了一个空列表。
还有一点是,当更改像 class-wc-rest-webhooks-controller.php 这样的核心文件时,特别容易陷入这个陷阱,特别是当团队中的多个人同时进行更改时。
如果其中一个大小写错误,整个数据链路就会崩溃。
还有一个细节非常重要。
排查问题时要根据具体场景而定。
比如去年的项目中,我们发送POST请求时,发现明明输入了购物车数据,但是GET请求时变量却为空。
通过var_dump检查后,我们发现任务说明写错了。

一开始我以为可能是缓冲问题,后来发现不对。
问题全部出在变量名上。

直接进入解决方案:首先找到文件,例如 class-wc-rest-webhooks-controller.php 或您的自定义文件,使用 IDE 的搜索功能搜索所有相关变量名称,例如 cartitems、cartcontent、products,然后比较声明和使用的命名。
大写字母几乎都是错误的。
更改代码时,请严格遵循 WooCommerce 的驼峰式命名约定,例如将 $cartitems 更改为 $cartItems。
调试时,建议在POST和GET请求处理中的关键位置添加一个var_dump,以查看变量值如何变化。

一个陷阱:永远不要直接替换核心文件。
WooCommerce 更新后,您的所有更改都将消失,并且可能会引入新的兼容性问题。
最好使用钩子或编写自定义插件。

其实很多人都没有注意到这一点,但这其实是一个相当大的陷阱。
建议以后写代码之前确认一下官方的命名约定。
使用 Git 时,不要跳过分支和评论。