面向对象PHP中如何通过构造函数访问并操作公共对象属性
在Shipments类的构造函数中给公共数组$clean_key添加元素的实现方法
嘿,这事儿其实挺简单直接的,你只需要在构造函数里直接通过$this->clean_key来操作这个公共数组就行——毕竟它是类的公共属性,类内部的所有方法(包括构造函数)都能直接访问和修改它。
先给你看修改后的完整代码示例,我把添加元素的逻辑加进去了:
class Shipments { // 定义公共数组属性 public $clean_key = []; public function __construct($settings = array()) { $use_access_key = $this->access_key(); $this->ee = ee(); $this->settings = $settings; // --- 给clean_key添加元素的核心代码 --- // 方式1:直接追加元素(自动分配数字索引) $this->clean_key[] = '第一个待添加元素'; $this->clean_key[] = '第二个待添加元素'; // 方式2:指定自定义键名添加元素 $this->clean_key['tracking_no'] = 'SHP-2024-001'; $this->clean_key['carrier'] = '顺丰'; // 如果你是想从SQL查询结果里提取数据添加(补全你原来的SQL片段): $query = ee()->db->select('*') ->from('your_shipment_table') // 替换成你的实际表名 ->where('status', 'active') // 可根据需求加条件 ->get(); if ($query->num_rows() > 0) { foreach ($query->result_array() as $row) { // 把每行的特定字段加入数组,比如取clean_key字段的值 $this->clean_key[] = $row['clean_key']; } } } // 假设你已实现的access_key方法 private function access_key() { // 这里是方法的具体逻辑 return 'your_access_key_here'; } }
几个关键说明:
- 访问公共属性:因为
$clean_key被定义为public,所以在类内部直接用$this->clean_key就能操作,不需要额外的getter/setter方法。 - 数组操作方式:和普通PHP数组的操作完全一致:
- 用
[]追加元素,数组会自动按数字索引递增; - 指定键名赋值时,会新增或覆盖对应键的元素。
- 用
- 从参数取值添加:如果你的元素来源是构造函数的
$settings参数,也可以这么处理:// 把settings里的clean_keys合并到类的clean_key数组中 if (!empty($settings['clean_keys']) && is_array($settings['clean_keys'])) { $this->clean_key = array_merge($this->clean_key, $settings['clean_keys']); }
这样不管你是加固定值,还是从参数、数据库查询结果里取数据,都能轻松把元素塞进$clean_key数组里啦。
内容的提问来源于stack exchange,提问作者user6818018
相关产品推荐
相关产品推荐

