このコードがうまくいくはずです。文字通り、この時点で私はいくつかの情報を取り、データベースに対してコマンドを実行するPHPクラスを作成しようとしています。コマンドが機能するので、それは私の変数の範囲と関係があるとは限りません。PHPページの空白 - スコープを理解していない
私はPHPが初めてです。これは面白いことです。
<?php
require __DIR__ . '/../bin/composer/vendor/autoload.php';
$cx = new Customer();
$cx->WriteCxToDB();
class Customer {
public $database = new medoo([
'database_type'=>'mysql',
'database_name'=>'dbname',
'server'=>'localhost',
'username'=>'dbusername',
'password'=>'dbpassword',
'charset'=>'utf8'
]);
public function WriteCxToDB(){
global $database;
if($database->has("customer", [
"OR"=>[
"username"=>"cxusername",
"email"=>"[email protected]"
]
]))
{
echo "User already exists";
}else{
$database->insert("customer", [
"username"=>"username",
"keyword"=>"keyword",
"email"=>"[email protected]",
"phone"=>"444-444-4444",
"first_name"=>"First",
"last_name"=>"Last"
]);
echo "User added";
}
echo "Done";
}
}
?>
私はこのデータベースエントリを行うために作曲家とmedooを使用しています。私はそれを自分の上で走らせて、うまく動作するので、データベースコードが動作することを知っています。
私が苦労しているのは、コード内の変数$database
のようです。その変数をミックスから削除すると、関数呼び出しが機能します。私は、変数の宣言がどこにあるのか/関数の内部/外部から参照する方法を理解していないような気がします。ありがとう。
PHPで何らかの出力が予想されるときに空白のページが表示されるときはいつでも、エラーログを確認してください。コードの開発とテスト時に常にdisplay_errorsを有効にしてください。致命的なエラーがすぐに表示されるはずです。あなたのスクリプトの一番上にある: 'error_reporting(E_ALL); ini_set( 'display_errors'、1); ' –
あなたは' global $ database'を使ったことに気付きましたが、 '$ this-> database'としてアクセス可能な' $ database'属性もクラスに定義されています。 .. –
プロパティを宣言するときにクラスインスタンス '$ database'をインスタンス化することは、http://php.net/manual/en/language.oop5.properties.phpで与えられた例の1つではありません。エラー報告はオフになっているため、オンにするかエラーログを確認する必要があります。 – MonkeyZeus