Как получить доступ к переменной функции класса в отдельном файле? - PullRequest
0 голосов
/ 24 октября 2019

Я хочу получить доступ к $imageFileType в отдельном файле. Файл был запрошен в отдельном файле.

Я уже делал это для доступа к функции классов раньше, но не знаю, как сделать шаг вперед, чтобы получить переменную из функции.

$fu = new fileUpload();
$filename = $fu->upload();

Есть идеи?

Код из класса.

class fileUpload {

public function __construct()
{}
public function upload() {

    if (!empty($_FILES["uploadedFile"]["name"])) {

        $file_count = count($_FILES['uploadedFile']['name']);
        $results = [];
        for ($i = 0; $i<$file_count; $i++) {
            $target_dir = "uploads/";
            $target_file = $target_dir . basename($_FILES["uploadedFile"]["name"][$i]);
            $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));

Полный класс:

class fileUpload
{

public function __construct()
{}
public function upload() {

    if (!empty($_FILES["uploadedFile"]["name"])) {

        $file_count = count($_FILES['uploadedFile']['name']);
        $results = [];
        for ($i = 0; $i<$file_count; $i++) {
//          echo $file['uploadedFile']['name'][$index] . "\n";

            $target_dir = "uploads/";
            $target_file = $target_dir . basename($_FILES["uploadedFile"]["name"][$i]);
            $uploadOk = 1;
            $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));

            // Check if $uploadOk is set to 0 by an error
            if ($uploadOk == 0) {
                return 0;
    // if everything is ok, try to upload file
            } else {
                if (move_uploaded_file($_FILES["uploadedFile"]["tmp_name"][$i], $target_file)) {
                    $results[] = basename($_FILES["uploadedFile"]["name"][$i]);
                } else {
                    return 0;
                }
            }
        }
        return $results;

Ответы [ 2 ]

1 голос
/ 24 октября 2019
<?php

class fileUpload {

    public $imageFileTypes = [];

    // your code

    public function getImageFileTypes()
    {
         return $this->imageFileTypes;
    }

    public function upload()
    {

        if (!empty($_FILES["uploadedFile"]["name"])) {

        $file_count = count($_FILES['uploadedFile']['name']);
        $results = [];
        for ($i = 0; $i<$file_count; $i++) {
            $target_dir = "uploads/";
            $target_file = $target_dir . basename($_FILES["uploadedFile"]["name"][$i]);

            // here's the important bit
            $this->imageFileTypes[] = $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
        }

    // etc etc
}

Теперь в вашем другом файле

$fu = new fileUpload();
$filenames = $fu->upload();
$uploadedFileTypes = $fu->getImageFileTypes();

Надеюсь, вы можете взять эту идею и адаптировать ее в свой код

0 голосов
/ 24 октября 2019

Когда вам нужны определенные данные для доступа вне классов, рекомендуется использовать геттеры и сеттеры.

У вас может быть что-то вроде этого:

<?php
class FileUpload {
    private static $lastUploadedFileType;

    public function __construct() {}

    public function upload() {
        [...]
        $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
        self::$lastUploadedFileType = $imageFileType;
        [...]
    }

    public static function getLastUploadedFileType() {
        return self::$lastUploadedFileType;
    }
}

И вызывать его где угодно с помощью:

<?php
FileUpload::getLastUploadedFileType();

PS .: Я использовал static в примере, потому что таким образом вам не нужно создавать экземпляр объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...