GithubHelp home page GithubHelp logo

thinkng-webapp's Introduction

ThinkPHP Next Generation Web Application Template@dev

为thinkng创建的应用模板

框架代码在这里topthink/thinkng

安装

composer create-project topthink/thinkng-webapp [app_name] --stability=dev

如果你无法安装,那么你可能使用了composer的**源

运行项目

进入public目录下执行

php -S 127.0.0.1:8080

浏览器打开 http://127.0.0.1:8080

在一切ok的情况下你会看到hello world!

欢迎fork,欢迎提交

thinkng-webapp's People

Contributors

hainuo avatar slince avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

thinkng-webapp's Issues

关于配置文件,扩展函数文件防止位置

在框架中将配置文件convention.php和扩展函数文件helper.php放置在了框架的src/Util目录下,那么是否应该将框架中将默认配置文件路进引向这个路径,但这里又产生了问题 webapp中config/paths.php定义了THINK_PATH等常量信息,在框架中并没有定义,但是配置文件中却又有这些常量。

总结下 就是helper.php有两个(两个都在框架中) convention.php的位置有两个(一个在webapp中一个在框架中)应该以哪个为主,这里需要规范下

orm删除操作有问题

牵扯到一个地址引用&option的问题
我的机器php环境

PHP 7.0.5 (cli) (built: Mar 31 2016 06:38:53) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

调用代码$model->delete(['id'=>1]); 发现问题

[0] Exception in Model.php line 500
no data to delete without where
            if (!empty($options) && empty($options['where'])) {
                // AR模式分析主键条件
                $this->parsePkWhere($options);  //问题出在这一步
            }

            // 分析表达式
            $options = $this->_parseOptions($options);
            if (empty($options['where'])) {
                // 如果条件为空 不进行删除操作 除非设置 1=1
                throw new Exception('no data to delete without where');
            }

问题出在parsePkWhere这个方法 这里使用了地址引用 后面对$options操作由string转成array出错 ,在这个方法中输出变量$options正常,但是返回到delete()方法中就出错了

protected function parsePkWhere(&$options)
        {
            $pk = $this->getPk();
            if (is_string($pk)) {
                // 根据主键查询
                if (is_array($options)) {
                    // 判断是否索引数组
                    if (0 === key($options)) {
                        $where[$pk] = ['in', $options];
                    } else {
                        return;
                    }
                } else {
                    $where[$pk] = strpos($options, ',') ? ['IN', $options] : $options;
                }
                $options = [];   //从这一步开始  option并没有写入到地址引用的值中  但是php并没有报错
                $options['where'] = $where;//所以这一步也就无从设定说起 但是又不是没有作用
               //var_dump($options);    output  array(1) { ["where"]=> array(1) { ["id"]=> string(1) "3" } }
            } elseif (is_array($pk) && is_array($options) && !empty($options)) {
                // 根据复合主键查询
                $array = array_intersect_key($options, $pk);
                if (count($pk) == count($array)) {
                    $options = array_diff_key($options, $array);
                    $options['where'] = array_combine($pk, $array);
                } else {
                    throw new Exception('miss complex primary data');
                }
            }
            return;
        }

delete()方法出错行数在493行

            }
            if (!empty($options) && empty($options['where'])) {
                // AR模式分析主键条件
                $this->parsePkWhere($options);
               // var_dump($options); output  array(1) { ["id"]=> string(1) "3" }
            }

根据以上判定在&的过程中可能产生了问题 我的解决办法是 return $option 而不是 &

关于composer获取

composer create-project topthink/thinkng-webapp thinkng --stability=dev -vvv
Checking CA file /etc/ssl/certs/ca-certificates.crt
Reading ./composer.json
Loading config file /home/hainuo/.config/composer/auth.json
Loading config file ./composer.json
Executing command (/home/hainuo): git branch --no-color --no-abbrev -v
Executing command (/home/hainuo): git describe --exact-match --tags
Reading /home/hainuo/.config/composer/composer.json
Loading config file /home/hainuo/.config/composer/auth.json
Loading config file /home/hainuo/.config/composer/composer.json
Loading config file /home/hainuo/.config/composer/auth.json


  [InvalidArgumentException]                                                     
  Invalid stability provided (dev), must be one of: stable, RC, beta, al  
  pha, dev                                                                       


Exception trace:
 () at phar:///usr/local/bin/composer/src/Composer/Command/CreateProjectCommand.php:277
 Composer\Command\CreateProjectCommand->installRootPackage() at phar:///usr/local/bin/composer/src/Composer/Command/CreateProjectCommand.php:154
 Composer\Command\CreateProjectCommand->installProject() at phar:///usr/local/bin/composer/src/Composer/Command/CreateProjectCommand.php:140
 Composer\Command\CreateProjectCommand->execute() at phar:///usr/local/bin/composer/vendor/symfony/console/Command/Command.php:259
 Symfony\Component\Console\Command\Command->run() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:844
 Symfony\Component\Console\Application->doRunCommand() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:192
 Symfony\Component\Console\Application->doRun() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:181
 Composer\Console\Application->doRun() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:123
 Symfony\Component\Console\Application->run() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:99
 Composer\Console\Application->run() at phar:///usr/local/bin/composer/bin/composer:43
 require() at /usr/local/bin/composer:24

create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--dev] [--no-dev] [--no-plugins] [--no-custom-installers] [--no-scripts] [--no-progress] [--keep-vcs] [--no-install] [--ignore-platform-reqs] [--] [<package>] [<directory>] [<version>]

总是说找不到 版本

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.