RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-200116

Vit's questions

Martin Hope
Vit
Asked: 2024-10-28 02:44:08 +0000 UTC

PHP7.4:使用命名空间时,执行时无法识别函数名(但编写代码时一切正常)。人工智能搞砸了他们的头,我也是。

  • 4

我决定训练自己解决各种面试问题的能力,并且全面地对待一切:composer、PHPUnit...

看起来一切都做得正确,无论是结构还是嵌套。但是当我运行测试时,消息是:调用未定义的函数。

同时:在IDE中编写代码时,用函数代替它们,参数的描述取自PHPDoc结构。当通过 required 连接时 - 一切正常,但这是“错误的”。

现在我们来具体说明一下。

“项目”结构

PHPInterviewTasks/
├── src/
│   ├── phpZoneTasks/
│   │   └── LargestPossibleNumberFromOthers.php
├── tests/
│   ├── phpZoneTasksTests/
│   │   └── LargestPossibleNumberFromOthersTest.php
├── vendor/
├── composer.json
└── phpunit.xml

LargestPossibleNumberFromOthers.php:

<?php
namespace PHPInterviewTasks\phpZoneTasks;

function getLargeNumberFromOthers (string $line): string
{
$tmp_array = explode(" ", $line);

usort($tmp_array, function($p1, $p2) {
    $order1 = $p1 . $p2;
    $order2 = $p2 . $p1;
    return $order2 <=> $order1;
});
return implode('', $tmp_array);
}

包含测试 LargestPossibleNumberFromOthersTest.php 的文件:

<?php
use PHPUnit\Framework\TestCase;
//use function InterviewTasks\phpZoneTasks\getLargeNumberFromOthers;
use function \PHPInterviewTasks\phpZoneTasks\getLargeNumberFromOthers;
use  \PHPInterviewTasks\phpZoneTasks;
//require_once __DIR__ . '/../../src/phpZoneTasks/LargestPossibleNumberFromOthers.php';

class LargestPossibleNumberFromOthersTest extends TestCase {
    public function testGetLargeNumberFromOthers()
    {
       $this->assertEquals("9958142211100", getLargeNumberFromOthersAlias("100 95 9 2 42 11 81"));
    }
}

PS 注释的使用选项显示了一些实验。

好吧,composer.json

{
  "name": "php-projects/interview-tasks",
  "description": "Examples, Solutions for interview",
  "minimum-stability": "stable",
  "license": "proprietary",
  "authors": [
    {
      "name": "vitaly_root",
      "email": "[email protected]"
    }
  ],
  "require": {
    "php": ">=7.4"
  },
  "require-dev": {
    "phpunit/phpunit": "^9.5"
  },
  "autoload": {
    "psr-4": {
      "PHPInterviewTasks\\": "src/"
    }
  },
  "autoload-dev": {
    "psr-4": {
      "PHPInterviewTasks\\Tests\\": "tests/"
    }
  },
  "scripts": {
    "test": "phpunit"
  }
}

2 人工智能系统已经在愚蠢地原地踏步了。我将很感激能有一个工作版本能够将这种耻辱转化为正确的形式。

php
  • 1 个回答
  • 29 Views
Martin Hope
Vit
Asked: 2022-09-08 23:57:43 +0000 UTC

Vue 2:组件计算属性未从 vuex 获取 getters 值

  • 0

大家好。购物篮。患者配置 - 没有水龙头,都在一个文件中。在加载应用程序时,vuex 商店通过异步操作(Ok)从服务器接收产品目录数据,初始化客户的购物车(localstorage 或 {})(Ok)。对篮子的进一步工作是同步进行的,所以我不再使用动作,我通过突变来行动。我使用 Chrome 的 vue.devtools 进行跟踪和测试。这是存储库代码:

Vue.use(Vuex);

const store = new Vuex.Store({
    state: {
        customerId: null,
        products: {},
        cart: {},
    },

    getters: {
        products: state => state.products,
        customerId: state => state.customerId,
        //cart: state => state.cart,
        searchProductsTitle: (state) => (productSearchedTitle) => {
            result = {}
            if (typeof productSearchedTitle !== 'undefined' && productSearchedTitle != '') {
                let m_count = Object.keys(state.products).length
                let keys = Object.keys(state.products)
                for (i = 0; i < m_count; i++) {
                    let product = state.products[keys[i]]
                    if (product.title.toLowerCase().includes(productSearchedTitle.toLowerCase())) Vue.set(result, i, product)
                }
            }
            return result
        },
        cart_sum: state => {
            sum = 0.00
            let m_count = Object.keys(state.cart).length
            let keys = Object.keys(state.cart)
            for (i = 0; i < m_count; i++) {
                let item = state.cart[keys[i]]
                sum += item[0]['opd'] * item[1]
            }

            return sum
        }
    },

    mutations: {
        'CUSTOMER_ID' (state, id) {
            state.customerId = id;
        },

        'SET_STORE' (state, products) {
            state.products = products
        },

        'SET_CART' (state, cart) {
            state.cart = cart
            localStorage.shoppingcart = JSON.stringify(state.cart)
        },

        'ADD_TO_CART' (state, data) {
            let id = data[0]['id']
            let amount = data[1]

            let item = state.cart[id]
            if (typeof item == 'undefined') {
                item = [data[0], amount]
            } else {
                item[1] += amount
            }

            Vue.set(state.cart, id, item)
            localStorage.shoppingcart = JSON.stringify(state.cart)
        },

        'REMOVE_FROM_CART' (state, data) {
            let id = data[0]['id']
            let amount = data[1]

            let item = state.cart[id]
            if (typeof item != 'undefined') {
                if (item[1] > amount) {
                    item[1] -= amount
                    Vue.set(state.cart, id, item)
                } else {
                    Vue.delete(state.cart, id)
                }
                localStorage.shoppingcart = JSON.stringify(state.cart)
            }
        },


    },

    actions: {
        initStore: async ({commit}, id) => {...},

    },

});

存储组件:

const ShoppingCart = {
    template: `
        <div id="shopping-cart">
            <table class="table">
                <thead class="thead-dark">
                    <tr>
                        <th scope="col"> </th>
                        <th scope="col">Title</th>
                        <th scope="col">Price</th>
                        <th scope="col">Amount</th>
                        <th scope="col">Sum</th>
                        <th scope="col"> </th>
                    </tr>
                </thead>
                <tbody>
                    <tr v-for="(item, index) in cart" v-bind:key="index">
                        <th scope="row"><img :src="item[0]['media_url']" width="32px" height="32px"></th>
                        <td>{{ item[0]['title'] }}</td>
                        <td>&#8362; {{ item[0]['opd'] }}</td>
                        <td class="form-inline">
                            <button class="btn btn-outline-secondary my-sm" type="button"><i class="fa fa-minus" aria-hidden="true" @click="decrCart(item[0], index)"></i></button>
                            <input class="form-control form-control-sm" type="text" v-model:value="item[1]" readonly size="2" style="text-align: center;">
                            <button class="btn btn-outline-secondary my-sm" type="button"><i class="fa fa-plus" aria-hidden="true" @click="incCart(item[0], index)"></i></button>
                        </td>
                        <td>&#8362; {{ (item[0]['opd'] * item[1]).toFixed(2) }}</td>
                        <td><button class="btn btn-outline-danger my-sm" type="button"><i class="fa fa-trash" aria-hidden="true" @click="removeCart(item[0])"></i></button></td>
                    </tr>
                </tbody>
                <thead class="thead-light">
                    <tr>
                        <th scope="col" colspan="4"> </th>
                        <th scope="col">&#8362; {{ (this.totalsum).toFixed(2) }}</th>
                        <th scope="col"></th>
                    </tr>
                </thead>
            </table>
            <div class="btn-group btn-group-lg" role="group">
                <button type="button" class="btn btn-primary btn-lg" id="go-purchase" :disabled="totulproducts == 0">Go to Purchase!</button>
                <button type="button" class="btn btn-outline-danger" id="clear-cart" @click="remove_all()">Remove all</button>
            </div>
        </div>
    `,

    computed: {
        cart() {
            return store.state.cart
        },

        totalsum() {
            return store.getters.cart_sum;
        },

        totulproducts() {
            return Object.keys(this.cart).length;
        }

    },

    methods: {
        remove_all() {
            store.commit('SET_CART', {});
        },

        incCart(item, index, amount=1) {
            store.commit('ADD_TO_CART', [item, amount]);
        },

        decrCart(item, index, amount=1) {
            store.commit('REMOVE_FROM_CART', [item, amount]);
        },

        removeCart(item) {
            store.commit('REMOVE_FROM_CART', [item, 10000]);
        }

    },

    data: function() {
        return {

        }
    },

}

现在描述问题

  1. 当按下 + 和 - 按钮减少或增加购物车中的项目时,devtools 会在 vuex 部分显示数量的变化,但不会在组件的 Computed cart 部分中捕获它(顺便说一下,切换 Vue 时.devtools 贡献,组件的状态立即更新!)。同时,点击“从购物车中完全移除商品”按钮工作正常,立即清理 vuex 和组件,以及组件的渲染。在数量减少到零的情况下类似的正确响应。它不适用于已在篮子中的商品的计算。

  2. 没有重新计算篮子的总量(即使在切换 vue.devtools 选项卡或在目录和篮子之间切换到 FE 之后 - 即切换动态组件 - 而篮子的状态更改为正确的状态,即也就是说,当组件启动时,它会从篮子中读取,并且 getter 收到的总金额 - 不,不会改变)。

  3. 即使在 vue.devtools 中更新购物车状态,FE 上的渲染也不会改变。

有人告诉我,这三个问题关系密切,但我自己解决不了。经历了很多选择,但被迫向集体思想寻求帮助。

vue.js
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5