PHP是面向对象的语言吗?如果没有,那么CakePHP的框架呢?它是PHP的面向对象的MVC实现吗?
另外,使用类完全构建的PHP应用程序是否可以称为面向对象?
我在CakePHP中输出XML.但是当我将XML放入验证器时,我遇到了这个错误:
The processing instruction target matching "[xX][mM][lL]" is not allowed.
Run Code Online (Sandbox Code Playgroud)
我<?php echo $this->Xml->header(); ?> 在顶部使用正确的XML布局<?php echo $content_for_layout; ?>
我的结果是:
<?xml version="1.0" encoding="UTF-8" ?><response type='' outcome='true' message='Login successful!'>
<user id='1234' total_number_of_completed_tasks='0' total_number_of_declined_tasks='0' total_number_of_passed_tasks='1' total_number_of_failed_tasks='1' reputation_points='99' deviant_points='0' />
<tasks>
<accepted>
<accepted_task id='4' type='Good' time_limit='500' details='Good accepted' />
<accepted_task id='5' type='OK' time_limit='660' details='Ok New task' />
<accepted_task id='9' type='Excellent' time_limit='2000' details='Great failed task' />
<accepted_task id='11' type='Your type' time_limit='222' details='Running and swimming all the way to Japan' />
<accepted_task id='7' type='Man' …Run Code Online (Sandbox Code Playgroud) 我的调试值设置为2,它显示所有查询,除了我需要的查询.
我有一个Items控制器方法,在User模型中调用此方法(Item belongsTo User):
function add_basic($email, $password) {
$this->create();
$this->set(array(
'email' => $email,
'password' => $password
));
if($this->save()) {
return $this->id;
}
else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我已经确认$email并且$password正在正确地传递给函数(并且填充了合法数据).email并且password是User模型中字段的名称.
我还确认$this->save()它正在返回false,但是当我查看发生这种情况的页面时,查询没有在调试中打印,并且没有抛出错误,所以我不知道什么是错误的.
关于如何查看错误或者为什么查询似乎没有被执行的任何想法?
这很奇怪,因为在此之后,我有另一个模型以完全相同的方式保存数据,它顺利出现.
我已经成为CakePHP的忠实粉丝和用户已有2.5年了,但是大多数开发人员在框架中处理的主要问题是它的速度很慢,而且调度周期太长,无法使其成为生产环境的可行解决方案.
我希望这个问题能激发人们分享他们提高CakePHP性能的技巧,窍门和技巧.
我经常提到的博客文章是伪编码器提高CakePHP应用程序性能的8种方法,它有很多提示,但必须有更多的提示!
所以请随意分享您对这个更灵活的优秀框架的想法!
我正在尝试使用PHPUnit的returnValueMap()来删除读取的结果.它没有产生预期的结果,但是等效的returnCallback()确实如此.如果您想亲自检查,我已经提供了我的测试用例.
returnValueMap()
$enterprise = $this->getMock('Enterprise', array('field'));
$enterprise->expects($this->any())
->method('field')
->will($this->returnValueMap(array(
array('subscription_id', null),
array('name', 'Monday Farms')
)));
$enterprise->subscribe('basic');
Run Code Online (Sandbox Code Playgroud)
结果:
Subscription ID: NULL
Name: NULL
Run Code Online (Sandbox Code Playgroud)
returnCallback()
$enterprise = $this->getMock('Enterprise', array('field'));
$enterprise->expects($this->any())
->method('field')
->will($this->returnCallback(function ($arg) {
$map = array(
'subscription_id' => null,
'name' => 'Monday Farms'
);
return $map[$arg];
}));
$enterprise->subscribe('basic');
Run Code Online (Sandbox Code Playgroud)
结果:
Subscription ID: NULL
Name: string(12) "Monday Farms"
Run Code Online (Sandbox Code Playgroud)
企业::订阅
public function subscribe() {
echo 'Subscription ID: ';
var_dump($this->field('subscription_id'));
echo 'Name: ';
var_dump($this->field('name'));
}
Run Code Online (Sandbox Code Playgroud)
为什么returnValueMap()不像我期望的那样工作?我到底错过了什么?
我在CakePHP应用程序中遇到以下错误:
由于可能的配置错误,请求超出了10个内部重定向的限制.如有必要,使用'LimitInternalRecursion'增加限制.使用'LogLevel debug'来获取回溯.,referer:http://projectname.dev/
根文件夹中的.htaccess如下所示:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
并在app文件夹中:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
并在webroot文件夹中:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /projectname
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
我正在学习本教程:
http://book.cakephp.org/2.0/en/getting-started.html
问候,斯蒂芬
是否可以知道用于生成仅具有应用程序代码的项目的CakePHP版本?
我的问题:
我下载了一个用CakePHP制作的项目,我真的说不出要使用的Cake版本.文件说,例如@version $Revision: 8004 $,但在某些文件中这是不同的.我应该假设最高版本(8004)是正确使用的吗?
它似乎是从2008年左右开始的,所以我猜它是一个1.x版本.
PD:这是项目的代码.
在大多数Web应用程序中,我们需要全局var base_url.在cakephp中获取base_url目前我将以下代码放在app_controller.php中的beforeRender方法中
function beforeRender(){
$this->set('base_url', 'http://'.$_SERVER['SERVER_NAME'].Router::url('/'));
}
Run Code Online (Sandbox Code Playgroud)
还有其他选择吗?意味着是否有任何全局变量可用于获取基本URL而不是这个?
这肯定是我已经完成或正在做的完全愚蠢的事情,但我有一个输入,其值属性根本没有显示:
<div class="input text required">
<label for="Product0Make">Make</label>
<input name="data[Product][0][make]" type="text" maxlength="255" value="AC Make" id="Product0Make">
</div>
Run Code Online (Sandbox Code Playgroud)
有没有人见过这个?我有一些我只是视而不见的拼写错误吗?无论它有什么价值,这里是生成这一行的CakePHP代码:
<?php echo $this->Form->input( 'Product.' . $index . '.make', array( 'default' => $product['Product']['make'] ) ) ?>
Run Code Online (Sandbox Code Playgroud)
我有一个带有少量文本输入的小表单,1个textarea和2个选择.没有显示任何文本输入值,但其他一切都很好.
任何想法将不胜感激.我甚至不敢相信我不得不问这个问题,但这让我感到多么疯狂.
我开始学习PHP/MySQL,但是在我正在阅读的所有文档中,它都提到/var/www/html了要安装CakePHP等框架的文件夹,或者例如/ var/www/html是你想要的文件夹安装你的网站,以便一切都在root中.
究竟是什么/var/www/html意思?