我只是想知道这是否是在PHP中创建对象和实现工厂模式的正确方法.我知道我们有工厂方法模式和抽象工厂模式,但是我们有一个类似下面的模式 http://noondreams.com/shared/data/pages/images/Factory.png吗?
class Factory
{
public function make($format)
{
switch($format)
{
case Source::Assocs:
return new \Source\Formats\Assocs();
case Source::XML
return new \Source\Formats\XML();
//Some other formats
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个页面,根据这样的书籍日期列出公寓
mypage.com/finder?date-from=2011-03-04&date-to=2011-03-12
Run Code Online (Sandbox Code Playgroud)
一切都是正确的,我从url获取date-from和date-get并使用这些值搜索数据库.问题是当我分页并点击进入另一个页面时,网址会更改为.
mypage.com/finder?page=9
Run Code Online (Sandbox Code Playgroud)
并获得错误必须提供值
必须是正确的网址
mypage.com/finder?date-from=2011-03-04&date-to=2011-03-12&page=9
Run Code Online (Sandbox Code Playgroud)
我在控制器上使用paginate和$ searchResult-> links(); 生成链接
我能做什么从页面到页面传递日期值,以便分页有效?
谢谢
我怎样才能获得第一个智能数组元素?
其实我知道怎么做...但我有以下问题.
我得到一个看起来像这样的数组
[DATA] => Array
(
[12] => Array
(
[content] => foobar
)
[1] => Array
(
[content] =>
)
[2] => Array
(
[content] =>
)
[3] => Array
(
[content] =>
)
//this is a snipit of {$myVar|@print_r}
Run Code Online (Sandbox Code Playgroud)
这一直持续到 [11]
由于某种原因,没有[0]和[12]在这个位置.
我不知道这是否总是12,但我知道它总是在第一个位置.
我不能对这个数组进行排序,因为有另一个数组具有相同的排序顺序,我必须保留此顺序以便以后输出.
有没有办法选择第一个元素而不使用array[0]或array.0?
信息:我正在开发的项目使用Smarty 2
编辑
- 如果我知道如何:)我会重新索引数组:)
为了解决这个问题,我{php}在smarty中打开,得到了我需要的数组,将它分成两个数组(当然重新索引它们就这样开始0).比我0 从每个数组临时保存pos 到临时数组.0用下划线(_)覆盖orig ,0然后将它们多重排序,将原始值放回并将它们传递回$this->_tpl_vars非常复杂的方式.(全部在tpl内)
{php}
// get …Run Code Online (Sandbox Code Playgroud) 我获得了直接从我的托管服务提供商(1and1)连接到MySQL的凭据.但是,当我尝试连接以下代码时:
$db_hostname = 'localhost/tmp/mysql5.sock';
$db_database = 'db543062602';
$db_username = '***********';
$db_password = '***********';
$dbc = mysqli_connect($db_hostname, $db_username, $db_password, $db_database)
or die('Error connecting to MySQL server');
?>
Run Code Online (Sandbox Code Playgroud)
错误:
警告:mysqli_connect():( HY000/2005):未知的MySQL服务器主机'localhost/tmp/mysql5.sock'(1)在/ homepages/... ... .../buge.php第10行连接错误到MySQL服务器
凭证都是一样的.实际上,它在使用mysql_connect()连接时有效,但它不想使用mysql_connect()!有什么可能导致问题的想法?
如何完全分离css文件
我正在考虑如何将 CSS 部分放在 Smarty + php 生成的 html 文件中。CSS 应该包含在标题中,但是如果页面确实有一些单独的 CSS 样式怎么办?
我使用模板引擎 Smarty。首先,我制作了标题(收集所有常用的东西。)并使用聪明的语法将其包含在 html 文件的开头。如果页面中有 css 的某些单独部分,我会将 css 放在“include 语句”下方。
带有 Smarty 语法的 HTML 文件
{include file='_include/header.inc.html'}
<link rel="stylesheet" href="/assets/style/top.css">
<script type="text/javascript">
$(function(){
$('#eyecatch ul').bxSlider({
pager: false,
auto: true,
pause: 5000
});
})
</script>
<article>
</article>
{include file='_include/footer.inc.html'}
Run Code Online (Sandbox Code Playgroud)
但是我的同事检查了用 Smarty 生成的代码,并说“这不是一个好习惯,因为即使有效也应该放在一个地方”
标题正下方,因为我没有将此行放在标题中。
正如他指出的那样,您有什么好主意可以用 Smarty 清理/组织我的代码吗?
我是Laravel的新手,正在构建一个简单的CRUD应用程序,以了解有关该框架的更多信息.我很好奇正确使用访问器.
我认为访问器非常适合格式化模型的属性以便在视图中显示,就像Angular中的过滤器一样.目前我有一些访问器设置为在视图中将char(1)字段转换为完整值,例如"c"为现金或"f"为融资.这是访问者的预期(或可接受的)使用吗?如果是这样,有什么方法可以阻止访问者格式化绑定到表单的属性,例如,在编辑路径中.
例如,我将数据库中的货币金额存储为十进制,但使用字符($ 150,00)对其进行格式化以在show route中显示.如何在填充编辑表单时阻止访问者更改值?(验证将失败,因为输入仅限于数值).
我正在使用 Laravel 的replicate()模型方法来生成现有实例的副本。如果没有要添加的列,它就可以正常工作unique
就我而言,有一些列是唯一的,所以我使用这个
$pr = Products::find(\Input::get('id'))->replicate();
$pr['product_code'] = $pr->product_code . '_'.$pr['id'];
$pr['name'] = $pr->name . '_'.$pr['id'];
$pr->save();
Run Code Online (Sandbox Code Playgroud)
这将确保如果产品被复制一次,它将处理唯一的列问题。但如果再次复制该产品,就会再次出现问题。
我该如何解决这个问题
我有数据通过这样的 AJAX 帖子输入:
data:
0: {type: 'percent', amount: 10,…}
1: {type: 'percent', amount: 200,…}
Run Code Online (Sandbox Code Playgroud)
如您所见,数组中的最后一项是有问题的。如果类型是百分比,并且数量超过 100,则验证应该失败。
我正在使用以下函数来验证请求:
public function validateRequest( $request ) {
$rules = [
'data.*.type' => 'required|alpha',
'data.*.amount' => 'required|min:1|int',
]
$messages = [...];
Validator::make($request->all(), $rules, $messages)->validate();
}
Run Code Online (Sandbox Code Playgroud)
我一直在查看验证页面,我认为我需要有条件地将max:100规则添加到该特定数组索引,但前提是该特定数组索引'type是percent. 我只是不确定如何完成。
先感谢您!
我用这个命令创建了一个新的Laravel 5.5项目:
laravel new crud-angular
之后,在项目文件夹中运行此命令:
php artisan key:generate
那一刻,我收到了这样的错误:
警告:require(F:\ Study\Laravel\crud-angular/vendor/autoload.php):无法打开流:第18行的F:\ Study\Laravel\crud-angular\artisan中没有此类文件或目录
致命错误:require():在F:\ Study\Laravel \中打开所需的'F:\ Study\Laravel\crud-angular/vendor/autoload.php'(include_path ='.; C:\ php\pear')失败第18行的crud-angular\artisan
我在这个项目中使用了wampserver 3.0.6.希望能帮助我.谢谢
我正在将 Docker for Mac 与这样的 Dockerfile 一起使用(仅开始):
# Base image
FROM ubuntu:16.04
RUN export DEBIAN_FRONTEND=noninteractive
# Update packages list and system
RUN apt-get -y update;
RUN apt-get -y upgrade
# Allow to use add-apt-repository command
RUN apt-get -y install software-properties-common locales poppler-utils
Run Code Online (Sandbox Code Playgroud)
几天后,我收到了这样的错误:
E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/k/krb5/libk5crypto3_1.13.2+dfsg-5ubuntu2_amd64.deb Hash Sum mismatch
E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/k/keyutils/libkeyutils1_1.5.9-8ubuntu1_amd64.deb Hash Sum mismatch
E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/k/krb5/libkrb5-3_1.13.2+dfsg-5ubuntu2_amd64.deb Hash Sum mismatch
E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/k/krb5/libgssapi-krb5-2_1.13.2+dfsg-5ubuntu2_amd64.deb Writing more data than expected (206672 > 201874) …Run Code Online (Sandbox Code Playgroud)