PHP cURL delete со значением [duplicate]

Прототип прототипа

является свойством функции. Это проект создания объектов с помощью этой (конструктор) функции с новым ключевым словом.

__ proto __

__proto__ используется в цепочке поиска для разрешения методов, свойств. когда объект создается (с использованием функции конструктора с новым ключевым словом), __proto__ установлен в (конструктор) Function.prototype

function Robot(name) {
    this.name = name;
}
var robot = new Robot();

// the following are true   
robot.__proto__ == Robot.prototype
robot.__proto__.__proto__ == Object.prototype

Вот мое (мнимое) объяснение, чтобы устранить путаницу:

Представьте, что существует воображаемый класс (чертеж / кокетка), связанный с функцией. Этот воображаемый класс используется для создания объектов. prototype - механизм расширения (метод расширения в C # или Swift Extension), чтобы добавить вещи в этот воображаемый класс.

function Robot(name) {
    this.name = name;
}

Вышеизложенное можно представить как:

// imaginary class
class Robot extends Object{

    static prototype = Robot.class  
    // Robot.prototype is the way to add things to Robot class
    // since Robot extends Object, therefore Robot.prototype.__proto__ == Object.prototype

    var __proto__;

    var name = "";

    // constructor
    function Robot(name) {

        this.__proto__ = prototype;
        prototype = undefined;

        this.name = name;
    }

} 

Итак,

var robot = new Robot();

robot.__proto__ == Robot.prototype
robot.prototype == undefined
robot.__proto__.__proto__ == Object.prototype

Теперь добавив метод к prototype робота:

Robot.prototype.move(x, y) = function(x, y){ Robot.position.x = x; Robot.position.y = y};
// Robot.prototype.move(x, y) ===(imagining)===> Robot.class.move(x, y)

Вышеупомянутое можно представить как расширение класса Robot:

// Swift way of extention
extension Robot{
    function move(x, y){    
        Robot.position.x = x; Robot.position.y = y
    }
}

Что, в свою очередь,

// imaginary class
class Robot{

    static prototype = Robot.class // Robot.prototype way to extend Robot class
    var __proto__;

    var name = "";

    // constructor
    function Robot(name) {

        this.__proto__ = prototype;
        prototype = undefined;

        this.name = name;
    }

    // added by prototype (as like C# extension method)
    function move(x, y){ 
        Robot.position.x = x; Robot.position.y = y
    };
}
4
задан Sasha 19 March 2012 в 14:35
поделиться

1 ответ

Как правило, если запрос DELETE отправляет данные в тело запроса, вы можете прочитать данные с помощью следующего кода:

$data = file_get_contents("php://input");

В зависимости от кодировки данных (обычно JSON или форма- закодировано), вы используете json_decode или parse_str для чтения данных в пригодные для использования переменные.

Для простого примера см. в этой статье , где автор использует форматированные данных для обработки запроса PUT. DELETE работает аналогично.


В вашем случае, однако, похоже, что имя файла считывается с URL-адреса запроса (вызов $this->uri->segment(3);). Когда я смотрю на ваш код, кажется, что переменная $gll_id не инициализирована, и вы не проверяете, являются ли результирующий объект $w и переменная $gll_name пустыми. Возможно, это приводит к сбою удаления. Включите ведение журнала ошибок с помощью ini_set("log_errors",1); и просмотрите журнал ошибок сервера. Если сбой связи отключен, журнал ошибок должен содержать путь, который PHP пытался отключить - вероятно, что путь неправильный.

9
ответ дан chiborg 20 August 2018 в 21:43
поделиться
  • 1
    Я немного потерял (я никогда с этим не работал). Как я могу получить данные с отдельного ввода? – Sasha 19 March 2012 в 14:42
  • 2
    Он швы file_get_contents («php: // input») не работает с enctype = «multipart / form-data», o.o – Sasha 19 March 2012 в 15:04
  • 3
    @Sasha, я добавил дополнительное объяснение. – chiborg 19 March 2012 в 15:45
  • 4
    Спасибо за помощь, вещь выглядит намного понятнее :) – Sasha 19 March 2012 в 16:22
Другие вопросы по тегам:

Похожие вопросы: