当前位置: 首页 > news >正文

app定制网站开发网站推广公司哪家好

app定制网站开发,网站推广公司哪家好,做文案的网站,b2c网站对比简介 PHP 8 引入了 ?->(Nullsafe 操作符),用于简化 null 检查,减少繁琐的 if 语句或 isset() 代码,提高可读性。 ?-> Nullsafe 操作符的作用 在 PHP 7 及以下,访问对象的属性或方法时&#xff0…

简介

PHP 8 引入了 ?->Nullsafe 操作符),用于简化 null 检查,减少繁琐的 if 语句或 isset() 代码,提高可读性。

?-> Nullsafe 操作符的作用

PHP 7 及以下,访问对象的属性或方法时,如果对象是 null,会导致致命错误 (Fatal error):

$person = null;
echo $person->name; // Fatal error: Uncaught Error: Trying to get property of non-object

解决方案(传统写法):

$person = null;
echo isset($person) ? $person->name : null;

PHP 8 解决方案(?->):

$person = null;
echo $person?->name; // 不会报错,直接返回 null

?-> 基本用法

访问对象的属性
class Person {public string $name = "John";
}$person = new Person();
echo $person?->name; // 输出 "John"$person = null;
echo $person?->name; // 输出 null,不会报错
访问对象的方法
class User {public function getName() {return "Alice";}
}$user = new User();
echo $user?->getName(); // 输出 "Alice"$user = null;
echo $user?->getName(); // 输出 null,不会报错
访问嵌套对象
class Address {public string $city = "New York";
}class Person {public ?Address $address = null;
}$person = new Person();
echo $person->address?->city; // 输出 null,不会报错$person->address = new Address();
echo $person->address?->city; // 输出 "New York"
?-> 结合数组

不能用于数组索引([]),但可以用于 ArrayAccess 对象

$data = null;
echo $data?['key']; // 语法错误:不能用于数组

解决方案:使用 ArrayAccess 对象

class Collection implements ArrayAccess {private array $items = ['name' => 'Alice'];public function offsetExists($offset) { return isset($this->items[$offset]); }public function offsetGet($offset) { return $this->items[$offset] ?? null; }public function offsetSet($offset, $value) { $this->items[$offset] = $value; }public function offsetUnset($offset) { unset($this->items[$offset]); }
}$collection = new Collection();
echo $collection?->offsetGet('name'); // 输出 "Alice"$collection = null;
echo $collection?->offsetGet('name'); // 输出 null,不会报错
?-> 结合函数返回值
function getUser() {return null;
}echo getUser()?->name; // 输出 null,不会报错
?-> 结合链式调用

PHP 8 允许链式 ?-> 操作,简化复杂的 null 检查:

class Department {public ?Person $manager = null;
}$department = new Department();// 传统写法
echo isset($department->manager) ? $department->manager->name : null;// PHP 8 `?->`
echo $department?->manager?->name; // 输出 null,不会报错
?-> 结合赋值

?-> 不能用于赋值,只能用于访问!

$person = null;// 不能用 `?->` 进行赋值
$person?->name = "John"; // 语法错误

解决方案:

if ($person !== null) {$person->name = "John";
}
?-> 不能用于静态方法
class Test {public static function hello() {return "Hello";}
}echo Test?->hello(); // ❌ 语法错误

静态方法必须用 :: 访问,不支持 ?->

解决方案:

echo isset(Test::hello) ? Test::hello() : null;
?-> 和 ?? 的区别

?-> 用于对象,?? 用于 null 合并

$person = null;// `?->` 适用于对象
echo $person?->name; // 返回 null// `??` 适用于变量为空时提供默认值
echo $person?->name ?? "Default Name"; // 输出 "Default Name"
  • ?-> 用于安全访问对象的属性或方法。

  • ?? 用于 null 合并,提供默认值。

http://www.cadmedia.cn/news/1747.html

相关文章:

  • 惠州水口网站建设百度投诉电话人工服务总部
  • asp 公司网站公众号关键词排名优化
  • 崇明建设小学网站企业网站有哪些平台
  • 无锡网站制作计划广告优化师前景怎样
  • 建网站潞城哪家强?网站优化排名推广
  • 厦门建设网站制作安徽做网站公司哪家好
  • 做网站的公司还市场吗网店推广的重要性
  • 网站赚钱方法优秀的品牌策划案例
  • 福建省建设行业企业资质查询网站seo技术论坛
  • 个人网站建设维护搜索引擎分哪三类
  • 建站网站建设百度免费建网站
  • 成全视频在线观看免费看seo软文是什么意思
  • 优秀自适应网站建设哪家好什么是电商
  • 网站文明专栏建设阿里云域名
  • 国家税务总局网站官网网址seo分析报告
  • 电子科技产品东莞网站建设优化软件有哪些
  • wx5 做网站可以么seo月薪
  • 网站页面布局分析湖北网站seo设计
  • 佛山建设银行社会招聘网站google推广平台怎么做
  • 语言网站建设线上培训机构
  • 网站建设需要什么硬件和软件搜索引擎优化是指什么意思
  • 公司主页怎么写专业seo推广
  • 岑溪网站建设营销咨询公司排名前十
  • web动态网站开发的书籍重庆关键词快速排名
  • 苏州全网网站建设企业网站建设规划
  • 网站建设哪里比较好semir是什么意思
  • 吉安高端网站建设公司建站平台哪个好
  • 网页特效精灵seo免费培训视频
  • 自己在线制作logo免费设计软件seo是什么学校
  • 山东省建设厅举报网站软文推广服务