我是PHP的新手,即使我阅读了很多教程和SO帖子,也无法解决问题。 我是一个自定义类(用户),我想在php代码中实例化它,但即使我包含它,我也会收到此错误。
致命错误:班级'用户'在第17行的D:\ wamp64 \ www \ MyFirstPhp \ formPhp.php中找不到
请帮我弄清楚我做错了什么。
这是我的用户类:
<?php
/**
* Created by IntelliJ IDEA.
* User: molnard
* Date: 2017. 06. 06.
* Time: 15:36
*/
namespace infopro;
class User
{
private $username;
private $userage;
private $sex;
public function __construct($username, $userage, $sex)
{
if (!is_null($username)) $this->username = $username;
if (!is_null($userage)) $this->userage = $this->userage;
if (!is_null($sex)) $this->sex = $sex;
}
/**
* @return mixed
*/
public function getUsername()
{
return $this->username;
}
/**
* @param mixed $username
*/
public function setUsername($username)
{
$this->username = $username;
}
/**
* @return mixed
*/
public function getUserage()
{
return $this->userage;
}
/**
* @param mixed $userage
*/
public function setUserage($userage)
{
$this->userage = $userage;
}
/**
* @return mixed
*/
public function getSex()
{
return $this->sex;
}
/**
* @param mixed $sex
*/
public function setSex($sex)
{
$this->sex = $sex;
}
}
?>
这是我的form.php类,我想在其中实例化用户类。
<!Doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Form php</title>
</head>
<body>
<?php
include("User.php");
$name = $_POST["name"];
$age = $_POST["age"];
$sex = $_POST["sex"];
echo "New user<br>name: " . $name . "<br>" .
"age: " . $age . "<br>" . "sex: " . $sex."<br>";
$newuser = new User($name, $age, $sex);
$newAge = $newuser->getAge();
echo $newAge;
?>
</body>
</html>
答案 0 :(得分:0)
尝试
$newuser = new \infopro\User($name, $age, $sex);
或者
<?php
use \infopro\User;
?>
<!Doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Form php</title>
</head>
<body>
<?php
include("User.php");
$name = $_POST["name"];
$age = $_POST["age"];
$sex = $_POST["sex"];
echo "New user<br>name: " . $name . "<br>" .
"age: " . $age . "<br>" . "sex: " . $sex."<br>";
$newuser = new User($name, $age, $sex);
$newAge = $newuser->getAge();
echo $newAge;
?>
</body>
</html>
答案 1 :(得分:0)
由于您在类中使用了命名空间,因此您必须使用该命名空间来正确包含User类。
尝试添加use \infopro\User;
:
`
<?php
include "User.php";
use \infopro\User;
$name = 'talib';
$age = '29';
$sex = 'male';
echo "New user<br>name: " . $name . "<br>" .
"age: " . $age . "<br>" . "sex: " . $sex."<br>";
$newuser = new User($name, $age, $sex);
$newAge = $newuser->getUserage();
echo $newAge;
?>
答案 2 :(得分:0)
异常已经告诉过你,你的代码有什么问题。没有这样的User
课程。如果使用名称空间,并且当前位于另一个名称空间(或没有名称空间),则必须使用完全限定名称。意思是:namespace + classname。
在您的情况下,您必须在类名前加上名称空间infopro
,这会导致\infopro\User
$user = new \infopro\User(...);
如果您不想总是使用fqn并且您处于不同的命名空间,您还可以使用use
将类名导入到文件的本地范围。
use \infopro\User;
// somewhere later ...
$user = new User(...);
答案 3 :(得分:0)
谢谢,所有回答都很好。 我使用intelij,我刚刚意识到命名空间只是可选的,如果我把它留空,我可以使用全局命名空间。