• Можно ли создать приложение для Android без IDE?

    @pfemidi
    Тут могло бы быть краткое описание меня
    2 комментария
  • Можно ли создать приложение для Android без IDE?

    GavriKos
    @GavriKos
    Можно. Неудобно, почти как есть кактус - но можно.
    Вот только чтобы собрать его в apk все равно понадобится SDK. А сейчас вроде бы проблемно его скачать без AndroidStudio.
    Ответ написан
    3 комментария
  • Можно ли создать приложение для Android без IDE?

    longclaps
    @longclaps
    Натыкался на статьи, где подробно пишут про это.

    Смотря чего ты ищешь.
    Если тебе нужно подтверждение - тогда да, запросто можно.
    Если же тебе нужно опровержение - тогда нифига нельзя.
    Думаю, ты обязан пометить этот ответ как решение )
    Ответ написан
    1 комментарий
  • Правильно ли я сделал плагин?

    BRAGA96
    @BRAGA96
    Здесь нечего сказать, просто процедурный плагин, без параметров и внешних методов.
    Вот вам взрослый стартовый шаблон:
    /**
     * @name PluginName
     * @version 1.0.0
     * @description jQuery Plugin
     * @since DD:MM:YYYY
     */
    ;(function ($) {
        'use strict';
    
        /**
         * @description Глобальный объект общих параметров плагина
         * @type {Object}
         */
        var plugin = {
            name: 'PluginName',
            version: '1.0.0',
            data: {
                general: 'general',
                setting: 'setting'
            }
        };
    
        /**
         * @description Параметры инициализации плагина по умолчанию
         * @type {Object}
         */
        var defaults = {
    
        };
    
        /**
         * @description Объект свойст для работы плагина
         * @type {Object}
         */
        var operative = {
            context: null,
            type: 'init',
            method: 'init'
        };
    
        /**
         * @description Объект публичных методов плагина
         * @type {Object<Function>}
         */
        var api = {};
    
        /**
         * @description Метод инициализации плагина
         * @type {Function}
         * @param {jQuery HTMLElement} $this jQuery DOM элемент на который инициализировали плагин
         * @param {Object} options Объект параметров инициализации
         * @param {Object} common Объект дополнительных параметров для работы плагина
         * @returns {jQuery HTMLElement} this
         */
        api.init = function ($this, options, common) {
            var setting = pluginSetting($this).set(plugin.data.setting, $.extend(true, {}, defaults, options));
            var general = pluginSetting($this).set(plugin.data.general, $.extend(true, {}, operative, common));
    
            //> Код плагина
    
            return $this;
        };
    
        /**
         * @description Метод получения параметров инициализации плагина
         * @type {Function}
         * @this {HTMLElement} DOM элемент на который инициализировали плагин
         * @param {String} [category = plugin.data.setting] Категория параметров, например "setting" или "general"
         * @param {String} key Ключ объекта параметров
         * @returns {Object | null} Объект параметров или null
         */
        api.get = function (category, key) {
            var params = pluginSetting($(this)).get(category || plugin.data.setting);
            return key ? params && params[key] ? params[key] : null : params || null;
        };
    
        /**
         * @description Метод установки новых значения и реинициализация плагина
         * @type {Function}
         * @this {HTMLElement} DOM элемент на который инициализировали плагин
         * @param {Object} params Объект новых параметров
         * @returns {HTMLElement} this
         */
        api.set = function (params) {
            var setting = pluginSetting($(this)).get(plugin.data.setting);
            return api.init($(this), $.extend(true, {}, setting, params), {
                context: this,
                type: 'update',
                method: 'set'
            });
        };
    
        /**
         * @description Метод получения текущей версии плагина
         * @type {Function}
         * @this {HTMLElement} DOM элемент на который инициализировали плагин
         * @returns {String} Версия плагина, например "1.0.0"
         */
        api.version = function () {
            return plugin.version;
        };
    
        /**
         * @description Проверить на Объект тип переданной сущности
         * @param {*} value Сущность
         * @returns {Boolean}
         */
        function isObject(value) {
            return typeof value === 'object' && !Array.isArray(value) && value !== null;
        }
    
        /**
         * @description Установить/получить настройки плагина
         * @type {Function}
         * @param {jQuery HTMLElement} $selector jQuery DOM элемент на который будут установленны настройки
         * @returns {Object<Function>} Объект методов
         */
        function pluginSetting($selector) {
            return {
                set: function (key, setting, filter) {
                    var current = this.get(key);
                    var params = $.extend(true, {}, current, setting);
                    if (filter) filter(params);
                    $selector.data(plugin.name, $.extend(true, {}, this.get(), createObjectWithKey(key, params)));
                    return params;
                },
                get: function (key) {
                    var data = $selector.data(plugin.name);
                    return key ? data && data[key] ? data[key] : null : data || null;
                }
            };
        }
    
        /**
         * @description Получить объект с переданным ключом и значением
         * @param {String} key Ключ объекта 
         * @param {*} value Значение свойства объекта
         * @returns {Object} 
         */
        function createObjectWithKey(key, value) {
            var object = {};
            object[key] = value;
            return object;
        }
    
        /**
         * @description Установка методов плагина на глобальный объект jQuery
         * @type {Function}
         * @this {jQuery HTMLElement} jQuery DOM элемент на который инициализировали плагин
         * @param {Object | String} Параметры инициализации плагина или название метода
         * @returns {jQuery HTMLElement | *} this или результат вызова метода
         */
        $.fn[plugin.name] = function (setting) {
            if (isObject(setting) || !setting) {
                return $.each(this, function () {
                    api.init($(this), setting, {
                        context: this,
                        type: 'init',
                        method: 'init'
                    });
                });
            } else if (typeof setting === 'string') {
                var args = [].slice.call(arguments, 1);
                var method = setting.toLowerCase();
                for (var i = 0; i < this.get().length; i++) {
                    if (method === 'init') break;
                    var context = this.get(i);
                    if (['get', 'version'].includes(method)) {
                        return api[method].apply(context, args);
                    } else {
                        api[method].apply(context, args);
                    }
                }
            }
            return this;
        };
    
    })(jQuery);
    Ответ написан
    Комментировать
  • Правильно ли я сделал плагин?

    RiverMacaroon0
    @RiverMacaroon0
    Web Developer
    У вас все повторяется 2 раза, напишите функцию и вызовите ее два раза с нужными аргументами. Во первых вы не будете писать один и тот же код 2 раза, во вторых сможете вызывать функцию сколько угодно раз.
    Ответ написан
    1 комментарий
  • Как правильно наследовать?

    SwoDs
    @SwoDs
    PHP YII2
    Методы не наследуются, все методы родителя доступны классу который его наследует.

    В вашем случае я бы просто расширил функционал класса Book, так как работа связана с ним.

    Если у вас был бы класс "Печатная продукция", то большая часть методов была там, а классы Book, Newspaper и т.д.
    наследовались от него. В этих класса была бы реализация только того что относится к ним, к примеру у книги есть автор, а у газеты нет... как то так
    Ответ написан
    Комментировать