gpt4 book ai didi

找不到 PHP 命名空间类

转载 作者:行者123 更新时间:2023-12-04 16:56:25 25 4
gpt4 key购买 nike

首先,这里是流程,以便您可以理解问题。我有四个文件,其中三个是类,我使用两个命名空间。
login.php 是一个表单,当表单被提交时,它会返回自身并执行下面的代码。 login.php 调用 Zcrypt::Decrypt 和 Zcrypt::Encrypt 没有问题。登录::DoLogin();也在 login.php 文件中调用。

在 Login.class.php(DoLogin 所在的位置)文件中,我创建了一个新的 DB 实例,并且可以调用 Zcrypt::Decrypt 而不会出错。在 Login.class.php 我调用 dbConnect();

在 DB.class.php(dbConnect 所在的位置)文件中,我无法调用 Zcrypt::Decrypt。它给了我一个语法错误或者它找不到 Zcrypt。我试过 Zcrypt::Decrypt([string])、\Zcrypt::Decrypt([string]),甚至\Zcrypt::Decrypt([string])。

问题是,为什么我可以在某些类中调用 Zcrypt 而在其他类中不能?我错过了一些代码才能工作?

这是我的文件

登录.php:

require 'NS/helpdesk/Login.class.php';
require 'NS/helpdesk/Cryptv2.class.php';
require 'NS/helpdesk/DB.class.php';
use \net\[domain]\Zcrypt;
use \net\[domain]\helpdesk\Login;

#check to see if the form was submited and that the values are equal.
{
if (strlen($_POST['hvalue']) > 1 && $_SERVER['REMOTE_ADDR'] == Zcrypt::Decrypt($_POST['hvalue']) )
{
Login::DoLogin(); ###### This is where I call my static Login Class
}
else {
echo "bad form";
}
}

登录.class.php
namespace net\[domain]\helpdesk;

use \net\[domain]\helpdesk\DB;
use \net\[domain]\Zcrypt;
class Login
{

public function DoLogin()
{
#call to the database class to open the db
$DB = new DB();
$DB->dbConnect();

#This is to show I can call Zcrypt in this class (note, no \) and it works.
echo $dbPass = Zcrypt::Decrypt("[coded string]");
}
}

数据库类.php
namespace net\[domain]\helpdesk;

use \net\[domain]\Zcrypt;

class DB
{

public $dbHost = '[address]';
public $dbUser = '[un]';
public $dbPass = '[pw]';
######The two commented out lines below will not run. I get a syntax error
# public $dbPass = \Zcrypt::Decrypt("[strint]");
# public $dbPass = Zcrypt::Decrypt("[string]")
public $dbName = '[name]';
public $db;

public function __construct(){}

public function dbConnect()
{
[code]
}
}

Cryptv2.class.php
namespace net\[domain];

use Exception;


class Zcrypt
{
public static function Encrypt($i)
{
[code]
}
public static function Decrypt($i)
{
[code]
}
}

谢谢你的帮助。

最佳答案

是语法错误。您不能在属性定义中使用表达式。

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.



http://php.net/manual/en/language.oop5.properties.php

关于找不到 PHP 命名空间类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19719462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com