ServerのPHPのバージョンは、私はデビッド・パワーズの本、PHPソリューション、第3版ではチュートリアルのシリーズで働いている5.3.0は別のクラスで保護されたプロパティを設定/変更する - PHP
です。ファイルのアップロード(この場合は画像)とサムネイルの作成(画像のアップロード時)を処理します。
これは三つのクラスを使用する必要があります。
Upload.php
を - これは、ファイルのアップロード
Thumbnail.php
を扱う - これは、画像のサムネイル
ThumbnailUpload.php
を作成する - これがUpload.php
を拡張し、Thumbnail.php
が必要です。他の2つのクラスと連携して、メイン画像がアップロードされるときにサムネイル画像を作成します。また、サムネイルを作成した後に元の画像を保持または削除するオプションや、生成されたサムネイルのファイル名にサフィックスを追加するオプションも追加されています(これらの機能は現在使用していませんが、後で他のアプリケーションで使用できます)。
ThumbnailUpload.php
はUpload.php
に拡張され、またThumbnail.php
クラスも必要です。 はupload_page.php
ページで呼び出されているので、の保護されたプロパティを変更しようとする私の努力が失敗するため、Thumbnail.php
はループしていないようです。十分なテストの後、Thumbnail.php
が新しい値を得ていないことは明らかです。
私はReflectionについて読んだことがあります。これはプロパティのThumbnail.php
にアクセスできるようにする方法かもしれませんが、ドキュメントは自分のような初心者には十分理解できません。
$maxSize
の新しい値をThumbnail.php
に渡したいと思っていますが、単にどのように考えているのかわかりません。
関連するコード:
// max file size for images
$max = 1048576;
// max long side dimension in pixels
$maxSize = 150;
// upload pics and create thumbnails
require_once('ClassFiles/Image/ThumbnailUpload.php');
$loader = new ThumbnailUpload('../images/projects/project_1/');
$loader->setThumbDestination('../images/projects/project_1/gallery_1/thumbnails/');
$loader->setMaxSize($max); // see note 1 below
$loader->setThumbSize($maxSize); // see note 2 below
$loader->upload();
$errors = $loader->getMessages();
$names = $loader->getFilenames();
注1 upload_page.php:
必要に応じてバイト単位の最大ファイルサイズを変更できるように これはUpload.phpで保護されたプロパティ「$最大」を設定し、注2: これはThumbnail.phpの保護されたプロパティ '$ maxSize'を変更するためのものです。ただし、Thumbnail.phpに実際に存在するため、このpublic関数はThumbnailUpload.phpで定義されていないというPHPエラーが発生します。だから私はThumbnailUpload.phpにパブリック関数を追加し、エラーが表示されなくなりますがThumbnail.phpで$ maxSizeのは
関連するコード変わら:ThumbnailUpload.php
namespace ClassFiles\Image;
use ClassFiles\File\Upload;
require_once __DIR__ . '/../File/Upload.php';
require_once 'Thumbnail.php';
class ThumbnailUpload extends Upload {
protected $thumbDestination;
protected $deleteOriginal;
protected $suffix = '_thb?'; // omit special characters to switch this on
public function setThumbSize($thumbSize) {
if (is_numeric($thumbSize) && $thumbSize > 0) {
$this->maxSize = (int) $thumbSize;
}
}
関連するコードを:Thumbnail.php
サムネイルに新しいコンストラクタのパラメータを追加することができます。実際の関連コードで質問を編集する方がよいでしょう。 – Mikey
@Mikeyこれほどまでにそれを減らすのに時間がかかりました。コードは問題ではありません。同じプロシージャが別のクラスにアクセスできる場合には、setterメソッドを使用して1つのクラスファイルにアクセスできないことがあります。 – mileaminute
正直言って、初めて質問を上から読んで始めてください。それはほとんど不可解です。更新を追加し続けるのではなく、時代遅れの順序で更新を追加することはほとんどありません。疑問を一貫した質問として誰にでも見せてください。必要に応じて書き換えます。 https://meta.stackoverflow.com/a/253230/476も参照してください。 – deceze