服務器PHP版本5.3.0改變/在其他類中設置保護財產 - PHP
我用了一系列的大衛力量的書,PHP解決方案,第三版教程的工作。他們處理文件上傳(在這種情況下,圖像)和縮略圖創建上傳圖像。
這需要使用三類:
Upload.php
- 此處理文件上傳
Thumbnail.php
- 這將創建縮略圖
ThumbnailUpload.php
- 這擴展Upload.php
,需要Thumbnail.php
。它與其他兩個類一起工作,在主圖像上傳時創建縮略圖。它還添加了在縮略圖創建後保留或刪除原始圖像的選項,以及爲生成的縮略圖文件名添加後綴的選項(我現在使用的這些功能都不具備,但我可能稍後會在其他應用程序中使用它們)。
如下面的代碼所示,ThumbnailUpload.php
延伸Upload.php
並且還需要Thumbnail.php
類。由於ThumbnailUpload.php
是upload_page.php
頁面中所謂的,因此我認爲Thumbnail.php
不在該循環中,因爲我努力更改其中的受保護屬性失敗。經過足夠的測試後,很明顯Thumbnail.php
沒有獲得新的價值。
我已閱讀關於Reflection的內容,也許這是允許我訪問Thumbnail.php
中的$maxSize
屬性的方式,但文檔對於像我這樣的新手來說沒有足夠的意義。
我想能夠獲得$maxSize
的新值傳遞給Thumbnail.php
,根本不知道如何。
相關代碼:upload_page.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.php的,以便需要時
以字節爲單位的最大文件大小是可以改變的注2: 這是在Thumbnail.php改變保護財產「$最大範圍」只是,這將引發一個PHP錯誤,說這個公共函數在ThumbnailUpload.php不確定,因爲它實際上是在Thumbnail.php。因此,我增加了公共功能ThumbnailUpload.php和錯誤消失,但是$最大範圍的Thumbnail.php保持不變
相關代碼: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
namespace ClassFiles\Image;
class Thumbnail {
protected $original;
protected $originalwidth;
protected $originalheight;
protected $basename;
protected $thumbwidth;
protected $thumbheight;
protected $maxSize = 100; // max long-side dimension in pixels
protected $canProcess = false;
protected $imageType;
protected $destination;
protected $suffix = '_thb?'; // omit special characters to switch this on
protected $messages = array();
public function setThumbSize($thumbSize) {
if (is_numeric($thumbSize) && $thumbSize > 0) {
$this->maxSize = (int) $thumbSize;
}
}
有些人喜歡downvote時實在是太羅嗦了。用實際的相關代碼編輯你的問題可能會更好。 – Mikey
@Mikey它需要一段時間來削減這一點。代碼不是問題,當同一過程能夠訪問另一個類時,無法使用setter方法訪問一個類文件。 – mileaminute
很誠實,從頭開始閱讀你的問題,就好像是第一次。這幾乎是不可理解的。不要繼續添加更新,並且絕對不要按照時間順序相反的順序添加它們。將任何人的問題都保存爲一個連貫的問題。必要時重寫。另請參閱https://meta.stackoverflow.com/a/253230/476。 – deceze