假设我在PHP中有一个看起来像这样的数组:
$values = Array(
'0' => 'value1',
'1' => 'value2',
'2' => 'value3'
)
Run Code Online (Sandbox Code Playgroud)
我想使用Mustache迭代数组,但我想要关联的值.这是我希望做的:
{{#values}}
{{the current value}}
{{/values}}
Run Code Online (Sandbox Code Playgroud)
我希望返回的结果是:
value1
value2
value3
Run Code Online (Sandbox Code Playgroud)
我通过将我的结构更改为:
$values = Array(
'0' => array('value=' =>'value1'),
'0' => array('value=' =>'value2'),
'0' => array('value=' =>'value3'),
)
Run Code Online (Sandbox Code Playgroud)
并在Mustache迭代器中调用{{valule}}.
我应该以完全不同的方式做这件事吗?我在PHP中使用SplFixedArray,我想使用此方法迭代值...
谢谢!
我遇到了一些意外的行为,在对象方法中定义的静态变量是跨实例共享的.这可能是已知的行为,但是当我浏览PHP文档时,我无法在对象方法中找到静态定义的变量的实例.
这是我遇到的行为的减少:
<?php
class Foo {
public function dofoo() {
static $i = 0;
echo $i++ . '<br>';
}
}
$f = new Foo;
$g = new Foo;
$f->dofoo(); // expected 0, got 0
$f->dofoo(); // expected 1, got 1
$f->dofoo(); // expected 2, got 2
$g->dofoo(); // expected 0, got 3
$g->dofoo(); // expected 1, got 4
$g->dofoo(); // expected 2, got 5
Run Code Online (Sandbox Code Playgroud)
现在,我希望每个实例$i都是静态的,但实际上是在实例之间共享.对于我自己的启发,有人可以详细说明为什么会这样,并在php.net上记录它的位置?$i
在我的程序中,我想添加一个下载选项来下载当前的straming视频.我试过这段代码:
$psp = "Tom_20_amp__20Jerry_20race-1.flv";
header("Content-type:application/octet-stream");
header("Content-Disposition:attachment;filename=$psp");
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
"C:\ DOCUME~1\ADMINI~1\LOCALS~1\Temp\Tom_20_amp__20Jerry_20race-1-5.flv"不是有效的FLV文件.
视频流正常.请指导我
我不能说这是一个问题,但更多的是一个意见请求,我相信很多其他人可以从澄清这个问题中受益.
这是我的实际案例:
我有一个名为DataExchangeService的抽象类和许多扩展此类的子类(这是我的MVC框架中的基本CONTROLLER类).处理数据定义的管理模块(用户,类型,部分等)在大多数情况下都具有100%相似性的添加,编辑,删除,列表方法.我知道,因为我只使用搜索和替换来复制它们.现在问题不是我的所有DateExchangeService子类都处理数据定义,因此有足够的情况我不需要CRUD方法.
多重继承会定义这些CRUD方法及其在另一个类中的行为,并且会在需要的地方扩展这两个类,但我确实认为它是棘手的东西,我不使用它(+ PHP没有这样的功能).那么最佳做法是什么?
以下是我想到的方法:
定义一个CRUDHandler类,其中包含所有这些参数化方法.
在需要的地方创建CRUDHandler类型的属性,并实现将迫使我使用这些方法的CRUD接口.
在实现方法的主体中,我添加如下内容:
public function edit($params) {
$this->params = $params;
$this->CRUDHandler->handle("edit", $this);
}
(在PHP中,这可以使用__call()魔术方法完成.)
将类CRUDHandler定义为扩展基础DataExchangeService.
在定义特定类型的DataExchangeService(例如UsersExchangeService)而不是扩展DataExchangeService时,您可以扩展CRUDHandler,这样您就可以在需要时获得所需的一切.
那么,对于这种MultiInheritance方法还有其他意见吗?
谢谢
如果Yii应该被编译成PHP,我只是很好奇.是否可以通过将Framework复制到服务器上的文件夹然后在我希望使用框架的脚本中包含某些内容(某些yii文件中的内容 - 我不确定它是如何工作的)来使用Yii?
(在框架和使用方面,Noob)
谢谢,乔希
我只想告诉你我是OOP的新手,这对我来说很难,但这是我的代码:
class functions
{
function safe_query($string)
{
$string = mysql_escape_string(htmlspecialchars($string));
return $string;
}
}
class info
{
public $text;
function infos($value)
{
echo functions::safe_query($value);
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法做出这句话:echo functions::safe_query($value);更漂亮?我可以使用extends,比我写的更好echo $this->safe_query($value);,但这是最好的方法吗?谢谢.
编辑:也许我甚至可以不使用类函数,只是创建单独的函数文件并包含它?
我在基于数据库条目自动生成短代码方面遇到了一些问题。
我能够得到正常的简码工作,即:
function route_sc5() {
return "<div>Route 5</div>";
}
add_shortcode('route 5','route_sc');
Run Code Online (Sandbox Code Playgroud)
和以下激活它的短代码是[route 5]
这有效。但我需要的是为每个数据库条目生成的简码。就像是:
$routes = $wpdb->get_results( $wpdb->prepare("SELECT * FROM wp_routes") );
foreach($routes as $route)
{
function route_sc$route->id () {
return "<div>Route $route->id</div>";
}
add_shortcode('route $route->id','route_sc$route->id');
}
Run Code Online (Sandbox Code Playgroud)
上面只是我希望它如何工作的一个例子。不是字面上我正在使用的代码。我将如何实现这一目标?): 谢谢。
我有一个正常的消息输出 $msg。我想让它链接,如果它是链接。(包含 http:// 或 www。)那么它应该使它<a href="http://google.com" target="_blank">http://google.com</a>
我已经从消息中删除了 html
$msg = htmlspecialchars(strip_tags($show["status"]), ENT_QUOTES, 'utf-8')
Run Code Online (Sandbox Code Playgroud)
怎么做,很多地方都见过。