タイトルが示すように、致命的な php エラーが発生します。完全なエラーは
Notice: 未定義の変数: 95 行目の "location" に記事があります
致命的なエラー: 95 行目の「location」にある非オブジェクトでのメンバー関数 storeUploadedImage() の呼び出し
エラーがスローされている関数は以下のとおりです
public function storeUploadedImage( $image ) {
if ( $image['error'] == UPLOAD_ERR_OK )
{
// Does the Article object have an ID?
// Line 95 -----v
if ( is_null( $this->id ) ) trigger_error( "Article::storeUploadedImage(): Attempt to upload an image for an Article object that does not have its ID property set.", E_USER_ERROR );
// Delete any previous image(s) for this article
$this->deleteImages();
// Get and store the image filename extension
$this->imageExtension = strtolower( strrchr( $image['name'], '.' ) );
// Store the image
$tempFilename = trim( $image['tmp_name'] );
if ( is_uploaded_file ( $tempFilename ) ) {
if ( !( move_uploaded_file( $tempFilename, $this->getImagePath() ) ) ) trigger_error( "Article::storeUploadedImage(): Couldn't move uploaded file.", E_USER_ERROR );
if ( !( chmod( $this->getImagePath(), 0666 ) ) ) trigger_error( "Article::storeUploadedImage(): Couldn't set permissions on uploaded file.", E_USER_ERROR );
}
問題に関連するものは何もないように見えますが、エラーの解決策を探して Google を調べました。
投稿の残りの部分は、画像ではなく作成されます。画像のアップロードを更新するために戻ったとき、この不可解なエラーなしで問題はありません。
id のクラス構成の一部は次のとおりです。
public function __construct( $data=array() ) {
if ( isset( $data['id'] ) ) $this->id = (int) $data['id'];
また、これを使用して、クラスの先頭で id を定義します
public $id = null;
Id が正しく渡されておらず、$this->id
null のままであるとしか考えられませんが、これを修正する方法がわかりません。私もこれについて間違っている可能性がありますが。
メソッドはここで呼び出されます
if ( isset( $_POST['saveChanges'] ) ) {
// User has posted the articles edit form: save the new articles
$articles = new Article;
$articles->storeFormValues( $_POST );
$articles->insert();
if ( isset( $_FILES['image'] ) ) $article->storeUploadedImage( $_FILES['image'] );
header( "Location: admin.php?status=changesSaved" );
} elseif ( isset( $_POST['cancel'] ) ) {