PHP5-OOP变革,类与对象

本文探讨了PHP5中面向对象编程的重大改进,包括新对象模式特性如构造函数、析构函数、对象引用等;异常处理机制;以及名称空间概念。文章通过示例介绍了自动加载类文件与构造函数的使用,并详细解释了公共、私有和受保护的访问权限关键字。
PHP5-OOP变革,类与对象(一)----变革概述
最近想把项目从PHP4移植到PHP5上所以在日本看了些日本关于PHP5的文章。总结了下,相信有助于移植工作吧。
PHP5 三大特点
l 新的对象模式 (New Object Mode)
Ø 构造函数和析构函数
Ø 对象的引用
Ø 对象的克隆
Ø 对象中的私有、公共及受保护模式
Ø 接口 (Interfaces)
Ø 抽象类
Ø __call
Ø __set 和 __get
Ø 静态成员
l 异常处理 (Exceptions)
Ø 可以使用 try catch 进行异常的处理且新增 Exception 类,用户可以继承该类来自定义异常内容。
l 名称空间 (Namespace)
Ø 名称空间对类的分组或函数分组很有用。它可以把一些相关的类或函数给组合到一起,方便以后调用。
注意你需要在何种情况下使用名称空间,在实际运用中,你可能会需要声明两个或多个名称一样的对象来做不同的事情,那么你就可以把他们分别放到不同的名称空间中去(但接口是要相同的)。
资料参考:http://www.phppro.jp/phpmanual/php/language.oop5.html
PHP5-OOP变革,类与对象(二)---自动引用类文件(__autoload)与构造函数(__construct)

1, 自动引用类文件。对于PHP的类来说,每次定义一个类都需要之前使用引用(require)之类的语句进行操作,无遗为PHP类的使用又增加了一个注意点。而对于PHP5来说可以在文件中使用“__autoload($class_name)来自动对所要的类进行加载(引用)了。
下面的例子,说明了__autoload是如何使用的. 它假设当前目录下每个文件对应一个类. 当脚本尝试来产生一个类MyClass1的实例,PHP会执行__autoload. 脚本假设MyClass1.php中定义有MyClass1,若用户在定义MyClass2时,__autoload也会去特定路径下加载MyClass2.php文件。
function __autoload($class_name) {

include_once
'../cls/'.$class_name . '.php';
}
$obj = new MyClass1();

$obj2 = new MyClass2();
?>
说明:关于autoload的具体使用请参见之后写的"PHP5—OOP__autoload(类文件自动加载规则)的定义方法及分析(自创)"一文。需要自定义自动加载类的路径,另外,对于动态加载类方法,可以使用“__call()”来动态的增加对象的方法
2,构造函数,在PHP5中可以使用统一的类构造函数名。“__construct()”(从VC++中学到的)。这样做的好处是,若类名改变,不需要再改变其构造函数名称,如下示例:
void __construct ( [mixed args [, ...]] )
说明:当父类中没有构造函数而子类有,默认处理即可,但当父类中有构造函数,子类在调用自身构造函数的同时调用父是必要的(即,PHP还不会将构造传递下去),parent::__construct();
class BaseClass {
function __construct() {
print "In BaseClass constructor\n";
}
}
class SubClass extends BaseClass {
function __construct() {
parent::__construct();
print "In SubClass constructor\n";
}
}
$obj = new BaseClass();
$obj = new SubClass();
?>
说明:在类中使用“__destruct()”可以释放删除该类,对于父类子类是否有,与构造时的处理相同。Parent::__destruct();

PHP5-OOP变革,类与对象(三)---OO中的访问权限关键字(public,private,protected)

3, PHP的OOP的访问权限。
PHP5中,对于类变量的访问权限主要是通过以下关键字进行定义的:
public----
公共变量,方法(在哪里都可以被访问且改变)
private----
私有变量,方法(只能在类中定义或类中改变时访问且改变)
protected----
受保护的变量,方法(不能被所继承的类所复写的变量或方法,即受保护不能由其继承的类改变。)
说明:PHP45中没有加关键字的变量,方法,全都为public(公共变量)。
/**
* MyClass 定義
*/
class MyClass
{
public $public = 'Public';
protected $protected = 'Protected';
private $private = 'Private';
function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}
$obj = new MyClass();
echo $obj->public; // 動作します
echo $obj->protected; // Fatal エラー
echo $obj->private; // Fatal エラー
$obj->printHello(); // PublicProtected そして Private 表示します
/**
* MyClass2 定義
*/
class MyClass2 extends MyClass
{
// public および protected メソッドは再定義できますが
// private はできません
protected $protected = 'Protected2';
function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}
$obj2 = new MyClass2();
echo $obj->public; // 動作します
echo $obj2->private; // 未定義です
echo $obj2->protected; // Fatal エラー
$obj2->printHello(); // Public、Protected2 を表示しますが Private は表示しません
?>
/**
* MyClass の定義
*/
class MyClass
{
// コンストラクタは public でなければなりません
public function __construct() { }
// public メソッドの宣言
public function MyPublic() { }
// protected メソッドの宣言
protected function MyProtected() { }
// private メソッドの宣言
private function MyPrivate() { }
// これは public となります
function Foo()
{
$this->MyPublic();
$this->MyProtected();
$this->

MATLAB代码实现了一个基于多种智能优化算法优化RBF神经网络的回归预测模型,其核心是通过智能优化算法自动寻找最优的RBF扩展参数(spread),以提升预测精度。 1.主要功能 多算法优化RBF网络:使用多种智能优化算法优化RBF神经网络的核心参数spread。 回归预测:对输入特征进行回归预测,适用于连续值输出问题。 性能对比:对比不同优化算法在训练集和测试集上的预测性能,绘制适应度曲线、预测对比图、误差指标柱状图等。 2.算法步骤 数据准备:导入数据,随机打乱,划分训练集和测试集(默认7:3)。 数据归一化:使用mapminmax将输入和输出归一化到[0,1]区间。 标准RBF建模:使用固定spread=100建立基准RBF模型。 智能优化循环: 调用优化算法(从指定文件夹中读取算法文件)优化spread参数。 使用优化后的spread重新训练RBF网络。 评估预测结果,保存性能指标。 结果可视化: 绘制适应度曲线、训练集/测试集预测对比图。 绘制误差指标(MAE、RMSE、MAPE、MBE)柱状图。 十种智能优化算法分别是: GWO:灰狼算法 HBA:蜜獾算法 IAO:改进天鹰优化算法,改进①:Tent混沌映射种群初始化,改进②:自适应权重 MFO:飞蛾扑火算法 MPA:海洋捕食者算法 NGO:北方苍鹰算法 OOA:鱼鹰优化算法 RTH:红尾鹰算法 WOA:鲸鱼算法 ZOA:斑马算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值