2017-06-06 9 views
0

私はPHPにはとても新しく、多くのチュートリアルとその投稿を読んでも問題は解決できません。 私はカスタムクラス(ユーザー)を持っていて、PHPコードでインスタンス化したいと思いますが、それを含めてもこのエラーが発生します。クラスをインスタンス化することはできません

Fatal error: Class 'User' not found in D:\wamp64\www\MyFirstPhp\formPhp.php on line 17

私が間違っていることを知って助けてください。ここ

<?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> 
+1

ユーザがいる場所のネームスペースを忘れている可能性があります。 – codekaizer

+0

'namespace infopro;' ....あなたのクラスは[namespaced]です(http://www.php.net/manual/en/language.namespaces .php): '$ newuser = new \ infopro \ User($ name、$ age、$ sex);' –

+0

名前空間がなくても私にとってはうまくいきます。あなたのPHPランナーは何ですか?バージョンは何ですか?あなたのプロジェクト構造体は何ですか? –

答えて

0

例外は、すでにあなたのコードでいただきました!間違って、あなたに言いました。そのようなUserクラスはありません。名前空間を使用し、現在別の名前空間(または名前空間なし)を使用している場合は、完全修飾名を使用する必要があります。意味:名前空間+クラス名。あなたのケースでは

、あなたは常にFQNを使用したくない、あなたは切り抜いた名前空間にある場合は\infopro\User

$user = new \infopro\User(...); 

につながる名前空間infopro、とあなたのクラス名をプレフィックスする必要があり、 useを使用してクラス名をファイルのローカルスコープにインポートすることもできます。

use \infopro\User; 

// somewhere later ... 
$user = new User(...); 
0

あなたのクラスで名前空間を使用しているので、あなたが適切にUserクラスが含まれるようにその名前空間を使用する必要があります

$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> 
0

を試してみてください。 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; 
?> 
0

ありがとう、すべての回答が良かった。 私はintelijを使用しています。私はただ名前空間をオプションであると認識しました。空白のままにしておくと、グローバル名前空間を使用できます。

関連する問題