我正在编写一个PHP库,用于在我的页面页脚中添加控制器后,将JavaScript标记和代码包括在内。我有添加src标记和包含代码的标记的方法。add_src方法应该将数组或单个srcs添加到已经设置的数组中。由于某种原因,只将数组中的最后一项添加到源中。代码输出很好。
图书馆:
<?php
class JS {
var $js_code = '';
var $js_srcs = array();
function add_code($js = ''){
$this->js_code .= $js;
return $this;
}
function add_src($src = '', $type = ''){
if(is_array($src)){
foreach($src as $type => $url){
$this->js_srcs[] = script_tag($src, $type);
}
} else {
$this->js_srcs[] = script_tag($src, $type);
}
return $this;
}
function reset_code(){
$this->js_code = '';
return $this;
}
function reset_srcs(){
$this->js_srcs = array();
return $this;
}
function generate(){
$str = '';
if(count($this->js_srcs) > 0){
foreach($this->js_srcs as $src){
$str .= $src;
}
}
$str .= '
<script>
'.$this->js_code.'
</script>';
return $str;
}
function generate_srcs(){
var_dump($this->js_srcs);
$str = '';
if(count($this->js_srcs) > 0){
foreach($this->js_srcs as $tag){
$str .= $tag.'
';
}
}
return $str;
}
function generate_code(){
if($this->js_code != ''){
return "<script>
".$this->js_code."</script>";
}
}
}用法:
<?php
$this->js->add_src(array('' => 'js/fileone.js', '' => 'js/filetwo.js', '' => 'js/filethree.js'));
$this->js->add_code('$("#element").myPlugin({});');
$this->js->add_src(array('js/global.js');
echo $this->js->generate_src();
echo $this->js->generate_code();脚本标记函数:
function script_tag($src = '', $type = '')
{$str = '';
$CI =& get_instance();
if(is_array($src)){
foreach($src as $url){
$str .= '<script ';
if($type != ''){
$str .= 'type="'.$type.'" ';
}
if(preg_match("^://^", $url)){ // If the url is absolute
$str .= 'src="'.$url.'"';
} else { //If the url is relative
$str .= 'src="'.base_url($url).'"';
}
$str .= '></script>
';
}
} else {
$str = '<script ';
if($type != ''){
$str .= 'type="'.$type.'" ';
}
$str .= 'src="'.$src.'"></script>
';
}
return $str;
}发布于 2014-10-25 02:23:15
问题是这条线:
$this->js->add_src(array('' => 'js/fileone.js', '' => 'js/filetwo.js', '' => 'js/filethree.js'));关联数组只能有一个具有特定键的数组。您试图对所有元素使用相同的键,因此它们会相互覆盖。你需要给他们不同的钥匙:
$this->js->add_src(array('type1' => 'js/fileone.js', 'type2' => 'js/filetwo.js', 'type3' => 'js/filethree.js'));如果您不关心键,您只需使用一个普通的索引数组:
$this->js->add_src(array('js/fileone.js', 'js/filetwo.js', 'js/filethree.js'));PHP将自动分配键0、1等。
https://stackoverflow.com/questions/26558724
复制相似问题