2

タイトルが示すように、致命的な 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->idnull のままであるとしか考えられませんが、これを修正する方法がわかりません。私もこれについて間違っている可能性がありますが。

メソッドはここで呼び出されます

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'] ) ) {
4

1 に答える 1

1

オブジェクトの名前$articlesは not$articleです。次のように変更します。

if ( isset( $_FILES['image'] ) ) $articles->storeUploadedImage( $_FILES['image'] );
                                     //  ^ note: s
于 2013-01-04T15:11:49.437 に答える