Parse error: syntax error, unexpected 'new' (T_NEW) in D:\phpStudy\WWW\test.com\phpExcelReader\Exce

本文详细记录了在Windows10环境下使用phpExcelReader组件遇到的各种错误及解决方法,包括类名冲突、文件路径问题等,并提供了一个可用的示例文件。

在使用phpExcelReader的example.php的时候报错如下:
环境如下:

windows 10 64位;
phpstudy 集成环境;
php 7.0 nts-32;
mysql 5.7.19;
apache 2.4

1、首先修改D:\phpStudy\WWW\test.com\phpExcelReader\Excel\oleread.inc,改为oleread.php,

2、删除里面的那个空方法,因为这个方法与类名冲突。就是下面这个方法;

     function OLERead(){

    }

2.1、删除example.php里面的那个new 对象,改为:

$data = new Spreadsheet_Excel_Reader();

改为:

$data = new SpreadsheetExcelReader();

不然会找不到这个类。

3、自带的那个excel文件是损坏了,因为这个文件是2007年创建的,时间比较久远。我重新写了个test.xls,里面是汉字,经测试可以读出来。

4、运行自带的sample出现如下错误:

错误一:
Parse error: syntax error, unexpected 'new' (T_NEW) in D:\phpStudy\WWW\test.com\phpExcelReader\Excel\reader.php on line 261
解决办法:
    public function spreadsheetExcelReader()
    // public function spreadsheetExcelReader()
    {

        //修改成这样的,php5.3开始后,废除了php中的”=&”符号,所以要想复制,直接用=引用即可
        $this->_ole = new OLERead(); 
        $this->setUTFEncoder('iconv');
    }

这个是php5.3以后版本的问题,php5.3以下版本不会出现


####错误二:

Warning: require_once(Spreadsheet/Excel/Reader/OLERead.php) [function.require-once]: failed to open stream: No such file or directory in E:\WebSite\htdocs\EXCEL2\Excel\reader.php on line 31

####解决办法:将31行的

require_once ‘Spreadsheet/Excel/Reader/OLERead.php’;

改为:

require_once ‘oleread.php’;


###错误三:

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; OLERead has a deprecated constructor in D:\phpStudy\WWW\test.com\phpExcelReader\Excel\oleread.inc on line 37

这个是方法名和类名一样的,高版本的php不推荐,因此报这个错:
解决办法是注释掉或者删除掉oleread.inc里面的那个空方法
function OLERead()。

####仍有一个错误,我也没解决掉,不严重,是不推荐类型,
>D:\phpStudy\WWW\test.com\phpExcelReader\Excel\reader.php里面的`class SpreadsheetExcelReader`里面有下面这个方法,与类名冲突了,但是不影响使用,所以我把能解决的问题都解决后,在example上面加了个`error_reporting(0);`用来屏蔽错误。如果你们解决了这个问题,请告诉我,谢谢!

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; SpreadsheetExcelReader has a deprecated constructor in D:\phpStudy\WWW\test.com\phpExcelReader\Excel\reader.php on line 102

public function spreadsheetExcelReader()
// public function spreadsheetExcelReader()
{
    $this->_ole = new OLERead();
    $this->setUTFEncoder('iconv');
}

“`

一定要一步一步的看,不要改类名,容易出错!!!

全部修改完之后的代码文件下载:

http://download.youkuaiyun.com/detail/zhezhebie/9926190

直接看例子就行了。

<think>嗯,用户遇到了着色器编译时的语法错误,具体是“Shader parse error unexpected TVAL_ID line 9”。我需要先理解这个错误信息的意思。TVAL_ID通常是指代标识符或变量名,所以可能是第9行出现了意外的标识符。可能的原因有很多,比如变量未声明、拼写错误、语法结构错误,或者使用了保留关键字。 首先,我应该建议用户检查第9行附近的代码,看看有没有明显的拼写错误或者缺少分号、括号不匹配的情况。比如,声明变量时是否漏掉了分号,或者在结构体定义中是否正确使用了括号。然后,检查变量是否在使用前已经正确声明,尤其是在不同作用域中的变量,比如全局变量和局部变量是否有冲突。 接下来,用户可能需要查看是否有重复的变量名或者误用了保留字。比如,像“sampler2D”这样的关键字是否被错误地用作变量名。此外,预处理指令是否正确闭合,比如#ifdef和#endif是否配对,或者宏定义是否有问题,这些都可能导致解析错误。 另外,引用的内容中提到UV打包的问题,可能与纹理坐标处理有关,但当前错误是语法错误,可能关联不大。不过用户提供的引用[3]提到了Sprite Editor的使用,可能用户在处理2D精灵或字体时涉及到着色器,需要注意变量命名是否与纹理相关参数冲突。 用户可能不太熟悉着色器语言的严格语法要求,比如在HLSL和GLSL中,变量声明必须指定类型,并且语句末尾需要分号。例如,正确的声明应该是“float myVar;”而不是遗漏分号。此外,结构体的定义是否正确,比如是否有额外的括号或者缺少成员声明。 还要考虑是否在代码中使用了错误的运算符,比如“=”代替“==”,或者在条件语句中缺少括号。这些细节错误在编译时会被捕捉为意外的标识符。 最后,建议用户使用IDE的语法高亮和错误检查工具,逐步注释掉部分代码来定位问题。如果这些方法无效,可能需要检查着色器编译器的版本兼容性,或者是否有特定平台的语法差异,比如移动端GLES和桌面端GLSL的差异。</think>### Shader语法错误“unexpected TVAL_ID”的解决方案 当出现`Shader parse error unexpected TVAL_ID line 9`时,通常表示第9行的代码中有一个未预期的标识符(如变量名或保留字),可能由以下原因引起: #### 1. **变量未声明或作用域错误** - **示例错误**:使用未定义的变量`uvOffset`,或在结构体外部引用内部变量。 - **检查方法**:确保变量在使用前已声明,例如: ```glsl // 错误示例:uvCoord未声明直接使用 vec2 texCoord = uvCoord * uvOffset; // line 9 // 正确写法 varying vec2 uvCoord; // 需在之前声明 ``` - 若变量作用域跨函数,需通过参数传递或全局声明[^3]。 #### 2. **语法结构不完整** - **常见情况**:语句缺少分号或括号不匹配。 - **修复示例**: ```glsl // 错误:声明后缺少分号 uniform sampler2D mainTex // line 9 // 正确 uniform sampler2D mainTex; ``` #### 3. **保留关键字冲突** - **示例**:将内置变量名(如`position`、`color`)用作自定义变量: ```glsl // 错误:position是GLSL内置变量 vec4 position = vec4(0.0); // line 9 // 正确:改为myPosition vec4 myPosition = vec4(0.0); ``` #### 4. **预处理指令错误** - **宏定义或条件编译问题**: ```glsl // 错误:#ifdef未闭合 #ifdef USE_NORMAL_MAP varying vec3 normal; // line 9 // 缺少#endif // 正确 #ifdef USE_NORMAL_MAP varying vec3 normal; #endif ``` #### 5. **工具辅助验证** - 使用Shader编辑器(如Visual Studio Code的Shader插件)实时高亮语法错误。 - 逐步注释代码块定位具体问题行。 --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SHUIPING_YANG

你的鼓励是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值