第160章 PHP OOP工程基础
160.1 本章提出背景
ICAI 的理论模型最终必须进入可执行的软件系统。理论中的元素、对象、属性、关系、状态、方法和行为如果只停留在概念层面,就不能形成真正能够运行、存储、修改和执行的认知系统。
PHP OOP(Object-Oriented Programming,面向对象编程)提供了一种将理论对象映射为程序对象的工程机制。
在 ICAI 工程中,可以建立如下基本映射:
理论认知元素 → PHP Class → PHP Object → Property → Method → Runtime Operation
进一步形成:
对象定义 → 对象实例化 → 属性加载 → 方法执行 → 状态变化 → 结果反馈
因此,PHP OOP 不是 ICAI 理论本身,而是 ICAI 理论进入软件运行环境所使用的工程实现基础。
160.2 Class:类
**Class(类)**是对象的结构定义。
在 ICAI 工程中,一个类可以理解为某一类认知对象的程序结构描述。它规定对象具有什么属性、具有什么方法,以及这些属性和方法之间如何共同形成对象的基本运行能力。
例如,可以定义一个最基本的认知对象类:
class CognitiveObject
{
public $id;
public $name;
public $type;
public function getName()
{
return $this->name;
}
}
这里的 CognitiveObject 就是一个 Class。
Class 本身不是一个正在运行的具体对象,而是对象的结构定义。
因此:
Class = 对象结构定义
而:
Object = Class 的实际运行实例
在 ICAI 中,可以进一步建立:
CognitiveObject
↓
对象结构定义
↓
具体对象实例
例如:
CognitiveObject
↓
Egg Object
类规定“什么样的对象可以被建立”,对象则表示“已经被建立出来的具体对象”。
160.3 Object:对象
**Object(对象)**是 Class 实例化之后形成的运行实体。
例如:
$egg = new CognitiveObject();
此时:
CognitiveObject
↓
new
↓
$egg
$egg 就是一个 Object。
对象可以拥有自己的属性值,并可以调用类所定义的方法。
例如:
$egg->name = 'egg';
$egg->type = 'food';
此时程序中的对象已经具有具体状态:
Object
├── id
├── name = egg
└── type = food
ICAI 的核心工程意义在于:理论中的“对象”必须最终具有程序运行时对应的对象实体。
因此可以建立:
认知对象
↓
对象定义
↓
Class
↓
实例化
↓
Object
↓
属性与状态
↓
方法与行为
这使理论对象从静态概念转化成为可以被程序操作的运行对象。
160.4 Property:属性
**Property(属性)**是对象内部用于保存对象特征、状态和数据的结构。
例如:
class CognitiveObject
{
public $id;
public $name;
public $type;
public $state;
}
这里:
id
name
type
state
都是对象属性。
对象建立以后,不同对象可以拥有不同的属性值:
$egg = new CognitiveObject();
$egg->id = 1;
$egg->name = 'egg';
$egg->type = 'food';
$egg->state = 'intact';
形成:
Egg Object
├── id = 1
├── name = egg
├── type = food
└── state = intact
属性承担的是对象信息保存功能。
在 ICAI 中,属性可以进一步对应理论中的对象特征:
对象
├── 身份属性
├── 类型属性
├── 物理属性
├── 状态属性
├── 空间属性
├── 关系属性
└── 认知属性
因此,Property 是理论对象进入程序内部之后的重要数据载体。
160.5 Method:方法
**Method(方法)**是定义在 Class 内部、用于执行对象操作的程序行为。
例如:
class CognitiveObject
{
public $name;
public $state;
public function changeState($state)
{
$this->state = $state;
}
}
这里:
changeState()
就是一个 Method。
调用:
$egg->changeState('broken');
对象状态便发生变化:
state = intact
↓
changeState()
↓
state = broken
因此,Property 主要承担:
保存对象信息
Method 主要承担:
执行对象操作
二者形成:
Object
├── Property → 保存
└── Method → 操作
这对于 ICAI 尤其重要。
因为认知系统并不是只有静态数据,还必须能够执行:
识别
→ 匹配
→ 判断
→ 修改
→ 记录
→ 学习
→ 执行
这些过程最终都必须通过程序中的 Method 执行。
160.6 Constructor:构造方法
**Constructor(构造方法)**是在 Object 创建时自动执行的方法。
PHP 中通常使用:
__construct()
定义构造方法。
例如:
class CognitiveObject
{
public $id;
public $name;
public $type;
public function __construct($id, $name, $type)
{
$this->id = $id;
$this->name = $name;
$this->type = $type;
}
}
创建对象:
$egg = new CognitiveObject(
1,
'egg',
'food'
);
对象建立以后,其初始结构已经被设置:
Object
├── id = 1
├── name = egg
└── type = food
Constructor 的工程作用就是完成:
对象创建 → 初始数据注入 → 初始状态建立
因此可以表示为:
new Class()
↓
Constructor
↓
Object Initialization
↓
可运行对象
在 ICAI 中,构造方法可以承担认知对象进入运行环境时的初始化工作。
例如:
认知对象定义
↓
建立对象
↓
初始化身份
↓
初始化属性
↓
初始化状态
↓
进入认知运行环境
160.7 Encapsulation:封装
**Encapsulation(封装)**是面向对象工程的重要原则。
封装的核心思想是:
对象内部的数据和操作应该由对象自身进行管理,而不是让系统中的任何模块随意修改对象内部结构。
例如:
class CognitiveObject
{
private $state;
public function setState($state)
{
$this->state = $state;
}
public function getState()
{
return $this->state;
}
}
这里:
private $state;
表示 state 不允许外部直接访问。
外部程序需要通过:
setState()
或者:
getState()
与对象进行交互。
形成:
外部系统
↓
Object Interface
↓
Method
↓
内部 Property
而不是:
外部系统
↓
直接修改内部数据
这能够保证对象内部规则不会轻易被外部代码破坏。
160.8 OOP六个基础要素的统一关系
本章六个基础概念可以统一为:
Class
↓
定义对象结构
↓
Object
↓
拥有 Property
↓
通过 Method 执行操作
↓
Constructor 建立初始状态
↓
Encapsulation 管理内部结构
可以进一步形成 ICAI 的工程映射:
| OOP概念 | 工程含义 | ICAI对应 |
|---|---|---|
| Class | 对象结构定义 | 认知对象类型 |
| Object | 具体运行实例 | 具体认知对象 |
| Property | 对象数据 | 属性、状态、特征 |
| Method | 对象操作 | 认知操作、对象操作 |
| Constructor | 对象初始化 | 认知对象建立 |
| Encapsulation | 内部结构保护 | 对象自主状态管理 |
160.9 从OOP基础进入ICAI对象工程
当上述六个基础概念建立以后,ICAI 就可以开始建立自己的对象体系。
例如:
Element
↓
Object
↓
Attribute
↓
Relation
↓
State
↓
Scene
↓
Method
↓
Behavior
这些理论概念不能全部作为普通数组处理,而应该逐步形成具有明确职责的程序对象。
例如:
class Element
{
protected $id;
protected $value;
public function getValue()
{
return $this->value;
}
}
进一步:
class CognitiveObject
{
protected $id;
protected $attributes;
protected $state;
protected $relations;
public function addAttribute($attribute)
{
$this->attributes[] = $attribute;
}
public function setState($state)
{
$this->state = $state;
}
}
这样,理论对象就开始形成真正的程序对象结构。
160.10 OOP运行模型
ICAI 的基础 OOP 运行过程可以表示为:
Class定义 → Object创建 → Constructor初始化 → Property形成 → Method执行 → Object状态改变
如果加入认知系统:
Element进入系统 → Object形成 → Attribute建立 → Relation建立 → State建立 → Method执行 → Behavior产生 → Feedback返回
因此,PHP OOP 在 ICAI 中承担的是一个非常明确的角色:
PHP OOP不是认知理论,而是把认知理论中的对象、属性、状态、方法和行为转化为可创建、可存储、可调用、可修改程序实体的工程基础。
160.11 本章小结
第160章建立 ICAI PHP OOP 工程的最基础结构。
Class负责定义对象结构;Object负责形成具体运行实体;Property负责保存对象信息;Method负责执行对象操作;Constructor负责建立对象初始状态;Encapsulation负责控制对象内部结构和外部访问方式。
六者共同形成:
Class → Object → Property → Method → Constructor → Encapsulation
进一步映射到 ICAI:
理论对象 → 程序类 → 运行对象 → 属性数据 → 方法操作 → 状态变化
由此,ICAI 理论开始从抽象的认知模型进入真正的 PHP OOP 运行环境,为下一阶段的 Element Class、Object Class、Attribute Class、Relation Class、State Class 等核心认知对象工程建立基础。