Ответы пользователя по тегу ООП
  • Зачем нужен второй интерфейс в определении класса, если первый интерфейс - наследник второго?

    neuotq
    @neuotq
    Прокрастинация
    Serializable много может быть разных ещё, и чтобы не плодить классы для некоторых проверок используют маркер интерфейсы, которые с одной стороны не навредят, а другой стороны сократят код и позволят сделать проверки типов где нужно для различных операций при всяких там наследованиях. Погуглите Marker Interfaces

    Там прямо в комментах написано:
    /**
     * A marker interface for entity reference classes.
     * <p>
     * This is used primarily as a means of ensuring type safety in collections
     * of mixed type references.
     * 
     * @see org.alfresco.service.cmr.repository.NodeService#removeChild(NodeRef, NodeRef)
     * 
     * @author Derek Hulley
     */
    Ответ написан
    2 комментария
  • Как провести рефракторинг различающихся сигнатур методов в потомках (php7)?

    neuotq
    @neuotq
    Прокрастинация
    Вы конечно мастер объяснений, к тому же сложно телепатически объять всю структуру приложения и понять что где происходит, что там у родителя, где и как используются/вызываются методы и тп.

    Но забавнее всего видеть слово рефакторинг и отсутвие желания исправить ужас:
    db::query("update member set ncaptcha = 0 where id = :memberId", $memberId);
    , эх..
    public function destroy(int $memberId){
    //Что тут и зачем хз,  что там происходит ты не написал
    parent::destroy();
    try{
    //Что такое db? PDO?
    //Далее почти тупо копипаст из маст рид книги для новичоков Php right way
    $stmt = db::prepare('update member set ncaptcha = 0 where id = :memberId');
    $stmt->bindParam(':memberId', $memberId, PDO::PARAM_INT); 
    
    if(!$stmt->execute()){
    throw new Exception($stmt->errorInfo()[2]);
    }
    
    }
     catch (Exceprion $e ) {
    throw $e;
    }
    //А и мы что-нибудь возвращаем? Если да, то выше нужно указать и тип возвращаемого значения у метода
    }

    ну и try нужно повесить на вызов метода:
    //Где-то в далеких недрах кодинга
    try {
    $tvoyPeremenayaClass->destroy($memberId);
    }
    catch (Exception $e)
    {
    echo 'Прости Юра, мы все просрали ...' . $e->getMessage();
    }

    И это только примерно я написал и это только начало. Вообще нужно начинать с того что поставить php7.1
    Ответ написан