php ::是啥意思

Posted .net&new

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php ::是啥意思相关的知识,希望对你有一定的参考价值。

php中::是什么意思?

 
PHP中的‘::’是一种内置的语法解析符号,中文名叫做“范围解析操作符”。:: 符号是用来帮助PHP中的语法结构“类”来实现对其成员的访问,通常我们只允许访问静态成员,具体代码如下:

① 类正常访问静态成员

class Heima
//静态属性
public static $heima = \'黑马\';
//静态方法
public static function getHeima()
//内部使用::
echo self::$heima; //self代表Heima类,同Heima::$heima



//外部访问
echo Heima::$heima; //访问静态属性,输出黑马
Heima::getHeima(); //访问静态方法,输出黑马
② 类访问普通方法(系统不建议,有风险,风险原因网页链接)

class Heima
//普通方法
public function show()
echo __CLASS__; //输出当前所属类类名



//正常应该是对象访问 $h = new Heima();$h->show();
//静态访问
Heima::show(); //系统会提示点什么,但是可以访问
//其实对象也可以利用::符号访问
$h = new Heima();
$h::show(); //效果也能达成,但是我们通常不建议这么使用
有关这类的基础知识,到黑马程序员论坛里面去看基础知识的视频吧。还有笔记。不然这么问,耽误自学时间
?

!== 和 === 在 PHP 中是啥意思? [复制]

【中文标题】!== 和 === 在 PHP 中是啥意思? [复制]【英文标题】:What do !== and === mean in PHP? [duplicate]!== 和 === 在 PHP 中是什么意思? [复制] 【发布时间】:2011-05-04 02:01:03 【问题描述】:

可能的重复:How do the equality (== double equals) and identity (=== triple equals) comparison operators differ?Reference - What does this symbol mean in PHP?php not equal to != and !==

这段代码 sn-p 中的 !===== 运算符是什么?

if ( $a !== null ) // do something
if ( $b === $a ) // do something

【问题讨论】:

php.net/manual/en/language.operators.comparison.php 很遗憾,SO 搜索引擎不适用于“===”,因为这个问题大约每月被问一次。 最佳答案之一作为评论 xD 提供 @Paul 对于=== 有this,对于!== 有this。这是两者的副本;我投票关闭作为第一个的副本,希望其他人投票支持第二个,所以他们都出现在列表中(谁投票关闭作为 NaRQ 只是懒惰) @Paul Tomblin:你一定很少来这里;) 【参考方案1】:

=== 还会检查变量的类型。

例如,"1" == 1 返回 true,但 "1" === 1 返回 false。它对于可能返回 0 或 False(例如 strpos)的函数特别有用。

这不能正常工作,因为 strpos 返回 0 和 0 == false

if (strpos('hello', 'hello world!'))

但是,这会起作用:

if (strpos('hello', 'hello world!') !== false)

【讨论】:

这个答案是正确的,但我要添加一个例子。 strpos("abcde", "f") 返回false,因为f 不在字符串abcde 中。您可能想对此进行测试,因此您将使用if (strpos("abcde", "f")===false)。如果您只是简单地执行了if(!(strpos("abcde", "f"))),那么如果 strpos 实际上返回了0,您将遇到麻烦。为什么?因为 PHP 是松散类型的,00 和 false 在不比较类型时也是等价的。【参考方案2】:

它们是identity等价运算符。

1 == 1
1 == "1"
1 === 1
1 !== "1"
true === true
true !== "true"
true == "true"

所有这些都等同于真实。 另请查看@mbeckish 提供的this link

【讨论】:

我不会称它为身份,因为具有不同身份的两个对象仍然可以具有相同的值和相同的类型(并且=== 相同)。 php中没有identity 是等价运算符。它断言两个“参数”(左侧和右侧)都相等且类型相同(如果是对象,则为同一类)。【参考方案3】:

它们是严格的类型比较运算符。他们不仅检查,还检查类型

考虑比较数字或字符串时的情况:

if (4 === 4) // same value and type

  // true

但是

if (4 == "4") // same value and different type but == used

  // true

if (4 === "4") // same value but different type

  // false

这适用于对象和数组。

所以在上述情况下,你必须做出明智的选择是使用==还是===

当您确定类型时,最好使用===

更多信息:

http://php.net/manual/en/types.comparisons.php

【讨论】:

【参考方案4】:

双 = 符号是一种比较,用于测试左侧的变量/表达式/常量是否与右侧的变量/表达式/常量具有相同的值。

三重 = 符号用于比较两个变量/表达式/常量是否相等且具有相同的类型 - 即两者都是字符串或都是整数。

同样的概念也适用于 !==

【讨论】:

【参考方案5】:

只有当给定值的类型和值都相等时,它们才会返回 true。 例子: 1 === 1 为真 “1” === 1 为假 1 === "1" 为假 "1" === "1" 为真

与 == 以上所有情况一样

【讨论】:

【参考方案6】:

当您使用两个等号 == 时,它将检查相同的值。

if( '1' == 1 )  echo 'yes'; 

上面的代码有效,因为它们具有相同的值。

但如果你使用三个等号===,它会检查值和数据类型。

因此

if( '1' === 1 )  /* this will not work */ 

这是因为'1' 的数据类型为string,而1integernumber

但你可以做这样的事情 - 我认为 :D

if( (integer) '1' === 1 )  echo 'this works'; 

因为我们正在将'1' 的数据类型更改为integer

【讨论】:

以上是关于php ::是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

php中的@是啥意思? [复制]

php是啥意思啊

===在php中是啥意思[重复]

!== 和 === 在 PHP 中是啥意思? [复制]

php ::是啥意思

“PHP 编译选项”到底是啥意思?