dirname的一个小问题
时间:2011-12-15
来源:互联网
参数:文件路径
返回值:父目录路径。
使用方法很简单:
require dirname(__FILE__).'/class.test.php';
但是在类中使用为什么会报错呢?
PHP code
<?php require_once dirname(__FILE__).'./test.php'; class testDirname{ public static $file_config = array(//下面会报错 'syn_file'=> dirname(__FILE__).'/data/syn_file', 'log_file'=> dirname(__FILE__).'/data/log_file', 'oper_file'=> dirname(__FILE__).'data/oper-file', 'test' => dirname('E:\www\dirname.php'), ); public function getFileList(){ } private function check(){ } } $file_config = array(//类之外使用是正确的。 'syn_file'=> dirname(__FILE__).'/data/syn_file', 'log_file'=> dirname(__FILE__).'/data/log_file', 'oper_file'=> dirname(__FILE__).'data/oper-file', 'test' => dirname('E:\www\dirname.php'), ); print_r($file_config);
是什么原因呢?求解。。
作者: ohmygirl 发布时间: 2011-12-15
作者: jordan102 发布时间: 2011-12-15
其它函数一样。不只是dirname。
作者: ci1699 发布时间: 2011-12-15
报错信息你至少要贴出来吧。。
这么简单一个文件,随便运行下就知道是什么错误了。
给出的报错信息是语法错误。但是类外使用的话不会报语法错误。
作者: ohmygirl 发布时间: 2011-12-15
常量 __FILE__ 要在运行时刻才产生
你写成静态方法不是一样吗?只不过多了对括号
题外话:
diname(__FILE__) 返回的是程序文件所在的目录,这样一来你的目录结构显得好奇怪的
一般类定义文件在网站目录结构中占据固定位置,似乎并不需要 diname(__FILE__) 吧?
作者: xuzuning 发布时间: 2011-12-15
定属性貌似不能用函数。
其它函数一样。不只是dirname。
把static去掉也是一样的。。
一样会错误,这个直接在类中这样使用也是错误的:
private $dir = dirname(__FILE__);
作者: ohmygirl 发布时间: 2011-12-15
作者: yao970953039 发布时间: 2011-12-15
这是因为类属性在定义时不能赋予不确定的值!
常量 __FILE__ 要在运行时刻才产生
你写成静态方法不是一样吗?只不过多了对括号
题外话:
diname(__FILE__) 返回的是程序文件所在的目录,这样一来你的目录结构显得好奇怪的
一般类定义文件在网站目录结构中占据固定位置,似乎并不需要 diname(__FILE__) 吧?
恩,一般类定义文件在网站目录结构中占据固定位置。
是昨天写测试配置文件的时候偶然发现的错误。
谢谢唠叨大哥的解释。
也就是说:
在类中,类属性在定义时不能赋予不确定的值,所以会报编译错么?
作者: ohmygirl 发布时间: 2011-12-15
<?php
class testDirname{
public $file_config = addslashes('b');
}
$t = new testDirname();
echo $t -> file_config;
你写个函数来set一下吧。或在类__construct中set一下。
引用 2 楼 ci1699 的回复:
定属性貌似不能用函数。
其它函数一样。不只是dirname。
把static去掉也是一样的。。
一样会错误,这个直接在类中这样使用也是错误的:
private $dir = dirname(__FILE__);
作者: ci1699 发布时间: 2011-12-15
<?php class testDirname{ public $file_config = '0_0'; function __construct() { $this->file_config = dirname(__FILE__).'/data/log_file'; } } $t = new testDirname(); echo $t -> file_config;
作者: ci1699 发布时间: 2011-12-15
我是说不能用函数啊。
<?php
class testDirname{
public $file_config = addslashes('b');
}
$t = new testDirname();
echo $t -> file_config;
你写个函数来set一下吧。或在类__construct中set一下。
引用 5 楼 ohmygirl 的……
恩,我知道在construct中设置是可以的,set也是可以的,因为他们是在运行时被赋值的。
只是属性的初始化这么用的话会错误的。
作者: ohmygirl 发布时间: 2011-12-15
不过不是dirname问题。也不是__FILE__问题。
引用 8 楼 ci1699 的回复:
我是说不能用函数啊。
<?php
class testDirname{
public $file_config = addslashes('b');
}
$t = new testDirname();
echo $t -> file_config;
你写个函数来set一下吧。或在类__construct中set一下。
……
作者: ci1699 发布时间: 2011-12-15
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28