是否有人知道使用以下4个"图层"的PHP应用程序的一些好例子
ServiceLayer --> Model --> DataMapper --> DAO
我不确定它是否有意义,但是当我使用这样的设计时,我必须执行以下操作以在我的数据库中创建新记录:
$servcie = new Service(new Mapper(new Dao));
$service->save($data)
Run Code Online (Sandbox Code Playgroud)
服务正在创建一个新的数据对象并将其传递给Mapper,Mapper将数据传递给提供的Dao ..
使用这种结构的意图是什么?
为什么不简单:
$model = new Model();
$model->save($data)
Run Code Online (Sandbox Code Playgroud)
模型正在保存到DB.
我在varchar2列中有以下内容:
10.1.2.3
10.2.3.4
8.3.4.1
8.3.2.1
4.2.1.3
4.3.2.1
9.3.1.2
Run Code Online (Sandbox Code Playgroud)
当我查询数据库时,我需要一个有序的结果:
4....
8....
9....
10...
Run Code Online (Sandbox Code Playgroud)
NLS_SORT参数设置为德语,简单的" order by COLUMN DESC/ASC" 不像excepted 一样工作.它回来了
10.....
8......
9......
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我是100%代码覆盖率的粉丝,但我不知道如何在Zend Framework中测试ErrorController.
测试404Action和errorAction没问题:
public function testDispatchErrorAction()
{
$this->dispatch('/error/error');
$this->assertResponseCode(200);
$this->assertController('error');
$this->assertAction('error');
}
public function testDispatch404()
{
$this->dispatch('/error/errorxxxxx');
$this->assertResponseCode(404);
$this->assertController('error');
$this->assertAction('error');
}
Run Code Online (Sandbox Code Playgroud)
但是如何测试应用程序错误(500)?也许我需要这样的东西?
public function testDispatch500()
{
throw new Exception('test');
$this->dispatch('/error/error');
$this->assertResponseCode(500);
$this->assertController('error');
$this->assertAction('error');
}
Run Code Online (Sandbox Code Playgroud) 因为昨天是我的应用程序没有呈现xfbml标签(名称和图片).我在Canvas-iframe应用程序中使用新的JavaScript SDK.
Firebug告诉我控制台内的以下内容:
Get: http://0.channel20.facebook.com/x/3332504234/true/p_1348362044=0
Run Code Online (Sandbox Code Playgroud)
过了一会儿:
XFBML tags failed to render in 30000ms.
Run Code Online (Sandbox Code Playgroud)
有人有同样的问题,或者知道为什么会这样?
关注"问题"
PHP类具有很多属性.很多Getters/Setter.
有没有什么好的解决方案将所有属性转换为数组?
protected $name;
protected $date;
public function getName();
public function getDate();
public function asArray(); // call all getters?
Run Code Online (Sandbox Code Playgroud) 警告:非静态方法Zend_Controller_Request_Http :: getCookie()不应该静态调用..
我尝试以下方法来获取Cookie值:
$cookieData = Zend_Controller_Request_Http::getCookie($key, $default);
Run Code Online (Sandbox Code Playgroud)
有更好的方法吗?
我不是一个大的ORACLE - SQL专家,所以我希望有人知道找到"重复"记录的好方法,它导致:单行子查询返回多行错误.
这是我的声明:
SELECT
CAST(af.SAP_SID AS VARCHAR2(4000)) APP_ID,
(SELECT DR_OPTION
FROM
DR_OPTIONS
WHERE DR_OPTIONS.ID = (
select dr_option from applications where applications.sap_sid = af.sap_sid)) DR_OPTION
FROM
APPLICATIONS_FILER_VIEW af
Run Code Online (Sandbox Code Playgroud)
它适用于我的测试系统,因此我"确定"可用数据记录中必定存在错误,但我不知道如何找到它们.
有人知道如何使用"新"Zend Autoloader加载模型吗?在Moment中,我的配置如下所示:
的application.ini
# Autoloader Namespace
autoloadernamespaces.0 = "Sl_"
Run Code Online (Sandbox Code Playgroud)
bootstrap.php中
/**
* Start Autoloader
*
* @access protected
* @return Zend_Application_Module_Autoloader
*/
protected function _initAutoload()
{
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'Sl_',
'basePath' => dirname(__FILE__),
));
return $autoloader;
}
Run Code Online (Sandbox Code Playgroud)
所以当我在/Models/User.php中放置一个模型时
class Sl_Model_User{}
Run Code Online (Sandbox Code Playgroud)
并创建一个新对象,一切都像设计的一样.但是如何使用Autoloader加载位于/Models/Dao/UserDB.php中的模型?
class Dao_UserDB{}
Run Code Online (Sandbox Code Playgroud) 有没有办法禁用dojo的div容器中的所有输入字段?
就像是:
dijit.byId('main').disable -> Input
Run Code Online (Sandbox Code Playgroud) 我已经使用Zend Framework研究了PHPUnit的一些示例,但有一部分我不理解.
在大多数示例中,Application Bootstrap从setUp()Method中的某种baseClass运行.
为什么不__construct()呢?有什么好理由吗?