使用Solar_Geshi对代码进行高亮显示!

Solar Demo站中使用了Solar_Geshi进行代码高亮,效果演示:http://demo.solarphp.cn/pay/alipay
其实很简单,只需要在视图中写上以下代码即可:

geshi()
    		  ->append($this->code, $language)
    		  ->fetch();
?>

$this->code在action中定义,Deom站中最频繁的操作是获得某个控制器中某个动作的代码:

    protected function _getMethodSource(ReflectionMethod $method)
    {
        $path = $method->getFileName();
        $lines = @file($path);
        $from = $method->getStartLine();
        $to = $method->getEndLine();
        $len = $to - $from + 1;
        return implode(array_slice($lines, $from-1, $len));
    }

调用代码如下,你应该都懂的,不用多解释:

        $class = new ReflectionClass('Demo_App_Image');
        $method = $class->getMethod('actionGd');
        $this->code = $this->_getMethodSource($method);

Solar中跨控制器引用视图!

我们都知道,使用Solar视图时,我们可以在一张视图中嵌入另一张视图,有两种方法,
方法一:使用Solar_View::template()方法
示例:

Example Page

template('_list'); // adding the .php extension is optional ?>

方法二:使用Solar_View::partial()方法
示例:

Example Page

partial('_list', $this->list); // adding the .php extension is optional ?>

那么partial和template在哪里寻找视图呢?在视图中写入如下代码:
Continue reading

时隔三月,发布solar-system-win-1.1.1-0.4版并更新solar离线文档!

时隔三月,终发布solar-win-1.1.1的第四个版本,这段时间非常忙碌,和林军、熊正理、刘修宏一起创办公司(长沙市尤盛网络科技有限公司),和李铁一起共事。期间领导团队帮助名师网开发暑期选课系统、开发免单社区站(http://miandan.net)。

紧接着就是毕业生找工作,一直就没有停止过,也一直沉不下心来做事情。所幸我已基本脱离这种状态,又回来了!
Continue reading

测试Solar/TP/YII/DOO执行10000次插入操作

袜子一起测试了下Solar/TP/YII/DOO四个框架执行10000次数据库插入操作所需要的时间,当然这里要用到ORM了,我主要负责测试Solar的测试工作。

直接看结果:

以下有两种环境,下面分别列出两种环境下的配置:

windows 7 :在windows7自带的性能评分中的分数:

处理器:7.2,内存 7.4,图形 7.2 ,游戏图形 7.2 ,主硬盘 5.9

Linux VPS:BurstNet 512M内存, CPU 1G、单核

Solar

在windows 7上,Solar 执行1w次插入所需要时间大约稳定在22秒
在linux vps上,Solar 执行1w次插入所需时间大约稳定在12.5秒

TP

在windows 7上,TP执行1w次插入所需要时间不稳定,出现过3.8秒,4.0秒,4.2秒,4.5 秒,5.2秒
在linux vps上未测

YII

在windows 7上,YII执行1w次插入所需要时间大约稳定在5秒
在linux vps上未测

DOO

在windows 7上,DOO执行1w次插入所需要时间大约稳定在3秒
在linux vps上未测

原生PHP

在windows 7上,原生PHP执行1w次插入所需要时间大约稳定在2.6秒

Solar架构类/source/solar/Solar.php

整体上来说,Solar架构做得还是相当不错的。前面一篇文章讲过Solar的入口文件(引导文件),大家可以再看看,里面用到了Solar架构

// load Solar
require_once 'Solar.php';

// start Solar with system config file
$config = "$system/config.php";
Solar::start($config);

那么Solar架构的作用是什么呢?主要完成什么工作呢?这就是本文的主要内容。

先还是说说Solar架构,入口文件 + Solar架构 + Solar
1. 入口文件:启动Solar
2. Solar架构:准备Solar运行的一切基本条件,定义Solar的运行机制、调用Solar库;
3. Solar库:Solar各项功能完成的库文件,这里必须提一下Solar_Base,它是规定Solar库中所有代码规范、执行流程的基

Solar有两个入口文件index.php,到底哪个才是真的?

其实这篇文章我最早在论坛里发过,原文地址是:http://solarphp.org.cn/viewtopic.php?f=11&t=4,今天把它引用过来,目的是为下一步的写作开个头,下一步将讨论Solar架构类及保证Solar运行必须的类库:)。

其实Solar有两个入口文件,一个是/index.php,别一个是/docroot/index.php。那么为什么要设置两个呢,究竟哪个才是真的入口文件?
假设及前提:
1.linux下的apache根目录为/var/www/html
2.solar的目录是/var/www/html/solar
3.有域名已经指向该服务器,假设域名为:www.exmaple.com
原因:为了让用户更快、更简单地体验Solar(也为了让用户更快有成就感),Solar允许直接把域名指向/var/www/html/solar目录,并用此域名访问,但是在实际项目布署中这是极其不安全的,更好的做法是把域名指向/var/www/html/solar/docroot。
Continue reading