下面先给大家分析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创建文件的功能。