Framework DSW项目周记0

欢迎来到这里,地球人,从现在开始,这里将会记录Framework DSW的成长历程…… ;-)

  • Framework DSW是什么?

呃……不解释。就给出一个公式:

Framework DSW = 
( 纯OOP
+ 可持久化的应用
+ 数据库抽象层
+ ORM
+ MVC
+ Model/Service运行模式
+ 可选的性能提升和缓存
+ 跨平台
+ 跨Web或者桌面应用开发
+ 分布式平台
+ 只需要会PHP开发AJAX
+ 简单的GUI组件使用
+ 完全的业务与表现层分离
+ 与其他语言的整合(JAVA/ErLang...)
+ ... )
* PHP5.3以及未来版本的支持!

解释下不解释的原因:各种比赛或者项目答辩解释的烦死我了……

  • 为什么会有项目周记?

因为这个框架已经通过了“上海市第三批创新项目”市级项目的立项申请,所以要写周记,因为要检查……-_-|||

  • 现在已经做了些什么?

目前为止,已经可以支持让PHP的应用像一直驻留在内存一样,而不是像其他框架(如Zend Framework),用户请求一次就去run一下你的Web应用,而是持续不断的(有点ASP.net的Application对象的意思,但是比他好用,因为不是一个“数组”);已经有了对象的通信机制,类似QT的信号和槽(综合对比其他的实现方式,发现消息循环太麻烦,Java的事件处理机制也是);支持使用枚举类型(不再需要那些大写的常量了~)、委托类型、集合类型还有记录类型(不是恼人的复制引用~)。

  • 信号和槽机制代码示例
<?php
include 'FrameworkDSW/System.php';

class TTest extends TObject {

    protected function signalProtected($a, $b, $c) {
    } //定义一个信号叫Protected

    public function signalPublic($a, $b) {
    } //定义一个信号叫Public

    protected function slotProtected($a, $b, $c) {
        var_dump($a, $b, $c);
    } //定义一个槽叫Proteced

    public function slotPublic($a, $b) {
        var_dump($a, $b);
    } //定义一个槽叫Public
}

class TChild extends TTest {

}

$obj = new TTest();
$obj2 = new TChild();

TObject::Connect(array ($obj, 'Protected'), array ($obj, 'Protected')); //连接$obj的Proteced信号到$obj的Proteced槽
TObject::Disconnect(array ($obj, 'Protected'), array ($obj, 'Protected')); //断开连接的

TObject::Connect(array ($obj, 'Protected'), array ($obj, 'Protected'));
TObject::Connect(array ($obj, 'Protected'), array ($obj, 'Public'));
TObject::Dispatch(array ($obj, 'Protected'), array (10, 'text', $obj));
//就是QT的emit,发出信号

TObject::Connect(array ($obj2, 'Public'), array ($obj, 'Protected'));
TObject::Dispatch(array ($obj2, 'Public'), array (1, 2, 3));

TObject::Disconnect(array ($obj, 'Protected'), array ($obj, 'Protected'));
TObject::Connect(array ($obj, 'Protected'), array ($obj, 'Protected'));
TObject::Disconnect(array ($obj, 'Protected'), array ($obj, 'Protected'));
TObject::Connect(array ($obj, 'Protected'), array ($obj, 'Protected'));
TObject::Connect(array ($obj, 'Protected'), array ($obj, 'Protected'));
TObject::Connect(array ($obj, 'Protected'), array ($obj, 'Protected'));
TObject::Connect(array ($obj, 'Protected'), array ($obj, 'Protected'));
TObject::Connect(array ($obj, 'Protected'), array ($obj, 'Public'));
TObject::Dispatch(array ($obj, 'Protected'), array (10, 'text', $obj));

TObject::Connect(array ($obj2, 'Public'), array ($obj, 'Protected'));
TObject::Dispatch(array ($obj2, 'Public'), array (1, 2, 3));

 

  • 枚举类型代码示例

 

<?php
require_once '../FrameworkDSW/System.php';

final class TDay extends TEnum {
    const AM = null, PM = null;
}

$aDay = TDay::AM();
$bDay = TDay::PM();

if ($aDay instanceof TDay) {
    echo 'correct', "\n";
}
$bDay = TDay::AM();
if ($aDay == $bDay) {
    echo 'same day section.';
}
echo "================================\n";
final class THappyColor extends TEnum {
    const clRed = 1, clGreen = 1, clBlue = 1;
}
$mColor1 = THappyColor::clRed();
$mColor2 = THappyColor::clGreen();
if ($mColor1 instanceof THappyColor) {
    echo 'I am a value in TColor.';
}
if ($mColor1 != $mColor2) {
    echo 'It is not the same.';
}
if ($mColor1 == THappyColor::clRed()) {
    echo 'I am red.';
}
echo "The code of red is {$mColor1->Value()}.";
  • 委托类型代码示例
<?php
interface TNotifyEvent extends IDelegate {
    /**
     *
     * @param	TObject	$Sender
     */
    public function Invoke($Sender);
}

$d=new TDelegate(function ($Sender) {
  echo 'happy!';
}, 'TNotifyEvent'); //当然不是匿名函数也支持的
$d(new TObject());

转载于:https://www.cnblogs.com/ExSystem/archive/2010/05/01/1725803.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值