【问题标题】:Need help php parse error [duplicate]需要帮助php解析错误[重复]
【发布时间】:2017-09-20 07:54:27
【问题描述】:

我需要帮助解决困扰我好几天的问题。这可能是一个显而易见的答案,并且之前可能已经回答过。作为先决条件,我做了很多谷歌搜索和堆栈爬行,但无济于事。老实说,我不确定问题是什么。非常感谢任何帮助,并希望在我的特殊情况下拯救其他人过早秃顶。所以废话不多说,代码如下:

代码 - db.php

class Database {
 private function host() {
  return 'localhost:3306';
 }
 
 private function user() { // line 8 is here
  return "root";
 }
 
 private function password() {
  return "";
 }

 private function dbname() {
  return "stonelabs";
 }
 
 private $dbh;
 private $error;

 public function __construct() {

  $dsn = 'mysql:host=' . $this->host() . ';dbname=' . $this->dbname();

  $options = array(
   PDO::ATTR_PERSISTENT    => true,
   PDO::ATTR_ERRMODE       => PDO::ERRMODE_EXCEPTION
  );   

  try{
   $this->dbh = new PDO($dsn, $this->user(), $this->password(), $options);
   return true;
  }

  catch(PDOException $e){
   $this->error = $e->getMessage();
   return false;
  }
 }
}

这是我收到的错误:

错误 - 在浏览器中

解析错误:语法错误、意外的“私有”(T_STRING)、期望函数 (T_FUNCTION) 在 /storage/emulated/0/var/www/Stone Info Labs/test/core/core/helpers/db.php 上第 8 行

我正在尝试做一个简单的 PDO 数据库类,之前做过很多次,根本行不通。索引文件中需要这个类文件(只有 4 行,打开 php 括号和 3 行需要行,所有这些都工作到这个阶段)。我正在 Android 6.0.1 上开发和运行,再次使用 servers Ultimate pro 提供的 lighttpd 服务器,在此之前所有这些都可以正常工作,包括以前的网站。

编辑

我使用的是 php 5.5 版

另一个编辑

我将 $this->pass() 更改为 $this->password() 时出现相同的错误。以上代码已更新

【问题讨论】:

  • 请在代码中注明哪一行是第 8 行,并在该行注释。
  • 你的php是什么版本?这适用于最新的 PHP 7:eval.in/781277
  • 似乎是 PHP v.4.x(:在旧的 PHP 版本中没有 private, public, protected 访问器
  • 我认为有一些隐藏的符号:见' private'中的空格
  • 去年一个流氓程序实际上炸毁了我的旧 Linux 机器,从那以后我一直在使用我的 Android,代码质量没有差异,可读性/可打字性几乎没有差异

标签: php html mysql pdo


【解决方案1】:

找到的解决方案:@num8er。归功于他的回答,我只是发布这个,所以在@num8er 可以发布答案之前可以获得答案。问题是隐藏在我的代码中的不可见字符,num8er 通过格式化程序运行代码找到了它们。

解决方案

确保您不会不小心在代码中输入或复制/粘贴不可见字符,如果解析错误令人困惑,罪魁祸首可能是不可见字符

【讨论】:

    【解决方案2】:

    你有两个问题:

    1. PHP版本,推荐5.4+
    2. password() 方法被称为 pass(),你应该更正它

    除此之外,一切正常

    我建议您查看此链接以获取一些有用的信息:

    【讨论】:

    • 谢谢,是的,我的版本有点过时了,但我开发的应用程序适合遗留机器,所以我需要在开发时考虑尽可能低的版本。如前所述,我已经更正了不正确的方法名称并且遇到了同样的错误。用户@num8er 发现问题是隐藏在我的代码中的不可见字符,使用代码格式化程序发现
    • 感谢您的回复,但是您是否尝试过使用公共函数而不是私有函数?
    猜你喜欢
    • 1970-01-01
    • 2015-10-20
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 2021-01-24
    相关资源
    最近更新 更多