下面先给大家分析php新建类的问题
index.php文件
1
2
3
4
5
6
7
8
9
10
|
function __autoload( $_className ) { require $_className . '.class.php' ; } <span style= "color: #ff0000" > //新建类?? if (isset( $_GET [ 'index' ])) { $m = new Main( $_GET [ 'index' ]); } else { $m = new Main(); </span>} include $m ->ui(); |
main.class.php文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
class Main{ private $index ; //构造方法,初始化数据 public function __construct( $index = '' ){ $this ->index= $index ; } //ui函数include相应的包含文件 public function ui(){ if ( empty ( $this ->index)||! file_exists ( $this ->index. '.inc' )){ $this ->index= 'start' ; } return $this ->index. '.inc' ; } } |
红字的部分有啥意义了:类中构造函数传参值已设默认是空(public function __construct($index='')),为啥不能直接写$m=new Main($_GET['index']);。如果不想在index做红字的if判断,类里需要怎么写了。谢谢,不是太理解
------解决思路----------------------
1
2
3
4
5
|
if (isset( $_GET [ 'index' ])) { $m = new Main( $_GET [ 'index' ]); //如果 $_GET['index'] 存在则将 $_GET['index'] 作为参数 } else { $m = new Main(); //否则使用默认参数 } |
直接使用 $_GET['index'] 将可能引发 NOTICE 级别错误
不加区别的使用传入数据,可能引发安全问题
------解决思路----------------------
稍微改了一下你看咋样。
1
2
3
4
5
6
7
8
9
10
11
12
|
<?php class Main{ private $index ; //构造方法,初始化数据 public function __construct( $index = '' ) { $this ->index= $index ? $index : '' ; } //ui函数include相应的包含文件 public function ui() { if ( empty ( $this ->index) |
------解决思路----------------------
1
2
3
4
5
6
7
|
! file_exists ( $this ->index. '.inc' )) { $this ->index= 'start' ; } return $this ->index. '.inc' ; } } |
ps:php怎么创建文件?
php项目开发过程中,常常需要自动创建一些文件,如生成静态html,生成php缓存文件,生成txt文件等等。下面就分享一下如何利用php程序创建文件,并向文件中写入内容。
一个项目中,可能不止一次需要生成文件,因此我们可以定义一个函数,当需要创建文件时再来调用这个函数,即可。
步骤一、定义函数writefile,用于以写的方式打开一个文件,文件不存在时自动创建,并向文件写入内容,代码如下。
1
2
3
4
5
6
7
|
<?php function writefile( $fname , $str ){ $fp = fopen ( $fname , "w" ); fputs ( $fp , $str ); fclose( $fp ); } ?> |
步骤二、函数的使用。如创建test.txt文件,并写入内容“abc”,代码如下:
1
2
3
4
5
|
<?php $filename = 'test.txt' ; $str = 'abc' ; writefile( $filename , $str ); ?> |
通过上述两个步骤的操作,即可实现php创建文件的功能。