.php t=,关于php:意外的T_VARIABLE,期望T_FUNCTION

我期望这是我忽略的基本语法错误,但我无法弄清楚。

在PHP脚本中,我不断收到以下错误。

Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in [path]/scripts/users/database_connection.php on line 4

当用include_once()调用我连接数据库的脚本时,会发生这种情况。 我将脚本剥离为最基本的代码(保留了其他代码所需的内容),但它仍在调用此错误。

class UserDatabaseConnection

{

$connection = sqlite_open("[path]/data/users.sqlite", 0666);

public function lookupUser($username)

{

// rest of my code...

}

}

$udb = new UserDatabaseConnection;

?>

我为此苦了一段时间,只是想知道是否还有其他人可以发现我出了问题的地方。

你不能放

$connection = sqlite_open("[path]/data/users.sqlite", 0666);

课外建设。 您必须将该行放在函数或构造函数中,但不能将其放在现在的位置。

谢谢,我第一次尝试使用OOP。

@犀牛,没事。 @Lekensteyn做得非常出色,并向您展示了理想情况下应该如何做。

因术语function和method的混合而被低估,并且无法在类构造函数之外进行预设分配。

您不能在类构造中使用函数调用,应该在构造函数中初始化该值。

从有关类属性的PHP手册中:

This declaration may include an initialization, but this initialization must be a constant value--that is, it must be able to be evaluated at compile time and must not depend on run-time information in order to be evaluated.

工作代码示例:

class UserDatabaseConnection

{

public $connection;

public function __construct()

{

$this->connection = sqlite_open("[path]/data/users.sqlite", 0666);

}

public function lookupUser($username)

{

// rest of my code...

// example usage (procedural way):

$query = sqlite_exec($this->connection,"SELECT ...", $error);

// object oriented way:

$query = $this->connection->queryExec("SELECT ...", $error);

}

}

$udb = new UserDatabaseConnection;

?>

根据您的需求,protected或private对于$connection可能是更好的选择。 这样可以防止您意外关闭或弄乱连接。

在成员定义之前使用访问修饰符:

private $connection;

由于您无法在PHP的成员定义中使用函数调用,因此请在构造函数中进行操作:

public function __construct() {

$this->connection = sqlite_open("[path]/data/users.sqlite", 0666);

}

好的代码示例,不错,也很小。

在$ connection之前放置public,protected或private。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是上题的代码:def infix_to_postfix(expression): precedence = {'!': 3, '&': 2, '|': 1, '(': 0} op_stack = [] postfix_list = [] token_list = expression.split() for token in token_list: if token.isalnum(): postfix_list.append(token) elif token == '(': op_stack.append(token) elif token == ')': top_token = op_stack.pop() while top_token != '(': postfix_list.append(top_token) top_token = op_stack.pop() else: # operator while op_stack and precedence[op_stack[-1]] >= precedence[token]: postfix_list.append(op_stack.pop()) op_stack.append(token) while op_stack: postfix_list.append(op_stack.pop()) return ' '.join(postfix_list) class Node: def __init__(self, value): self.value = value self.left_child = None self.right_child = None def build_expression_tree(postfix_expr): operator_stack = [] token_list = postfix_expr.split() for token in token_list: if token.isalnum(): node = Node(token) operator_stack.append(node) else: right_node = operator_stack.pop() left_node = operator_stack.pop() node = Node(token) node.left_child = left_node node.right_child = right_node operator_stack.append(node) return operator_stack.pop() def evaluate_expression_tree(node, variable_values): if node.value.isalnum(): return variable_values[node.value] else: left_value = evaluate_expression_tree(node.left_child, variable_values) right_value = evaluate_expression_tree(node.right_child, variable_values) if node.value == '!': return not left_value elif node.value == '&': return left_value and right_value elif node.value == '|': return left_value or right_value expression = "!a & (b | c)" postfix_expression = infix_to_postfix(expression) expression_tree = build_expression_tree(postfix_expression) variable_values = {'a': True, 'b': False, 'c': True} result = evaluate_expression_tree(expression_tree, variable_values) print(result)
最新发布
06-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值