1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <code> class blog_lib{
var $CI ;
var $posts_path ;
var $file_ext = '.md' ;
var $_all_posts ;
var $_all_tags ;
var $_all_pockets ;
public function __construct( $pathselect )
{
if (!isset( $this ->CI))
{
$this ->CI =& get_instance();
}
$this ->posts_path = FCPATH. $pathselect ;
}
</code>
|
Nach dem Login kopieren
Nach dem Login kopieren
控制器:
1 2 3 4 5 6 7 8 9 10 11 | <code> public function index()
{
$this ->load->library( 'blog_lib' );
$data [ 'config' ] = $this ->blog_config;
$this ->load->library( 'twig_lib' );
$data [ 'all_tags' ] = $this ->blog_lib->get_posts_tags();
$data [ 'posts' ] = $this ->blog_lib->get_posts();
$this ->twig_lib->render( "index.html" , $data );
}
</code>
|
Nach dem Login kopieren
Nach dem Login kopieren
如上我该如何向构造函数传参?
回复内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <code> class blog_lib{
var $CI ;
var $posts_path ;
var $file_ext = '.md' ;
var $_all_posts ;
var $_all_tags ;
var $_all_pockets ;
public function __construct( $pathselect )
{
if (!isset( $this ->CI))
{
$this ->CI =& get_instance();
}
$this ->posts_path = FCPATH. $pathselect ;
}
</code>
|
Nach dem Login kopieren
Nach dem Login kopieren
控制器:
1 2 3 4 5 6 7 8 9 10 11 | <code> public function index()
{
$this ->load->library( 'blog_lib' );
$data [ 'config' ] = $this ->blog_config;
$this ->load->library( 'twig_lib' );
$data [ 'all_tags' ] = $this ->blog_lib->get_posts_tags();
$data [ 'posts' ] = $this ->blog_lib->get_posts();
$this ->twig_lib->render( "index.html" , $data );
}
</code>
|
Nach dem Login kopieren
Nach dem Login kopieren
如上我该如何向构造函数传参?
CI是可以往类的构造函数传递参数的,但是构造函数的接受参数时必须是一个数组:
1 2 3 4 5 6 7 8 9 | <code> class blog_lib{
...
public function __construct( $param ){
...
$this ->posts_path = FCPATH. $param [ 'pathselect' ];
}
...
}
</code>
|
Nach dem Login kopieren
Controller 里面:
1 2 | <code> $this ->load->library( 'blog_lib' , array ( 'pathselect' => 'xx' ));
</code>
|
Nach dem Login kopieren
如果觉得这种方式不好可以用另一个方式,就是在ci的自定义的class做一个虚拟的空类,然后在空类之后再定义一个真实的类,通过config/autoload.php 自动载入这个类,就可以new了,那个时候怎样传递都可以。
application/library/blog.php :
1 2 3 4 5 6 7 8 | <code>
class blog{}
class blog_lib {
....
}
</code>
|
Nach dem Login kopieren
config/autoload.php
1 2 | <code> $autoload [ 'libraries' ] = array ( 'blog' );
</code>
|
Nach dem Login kopieren
Controller 里面:
1 2 | <code> $oblog = new blog_lib( $value );
</code>
|
Nach dem Login kopieren