今天的灵感大杂烩

发布时间:2019-06-04 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了今天的灵感大杂烩脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

php作为后台程序只提供数据,所有的展示都交给前台
而前台中数据和界面dom的双向绑定使用Angular

前端全给angluar进行掌控,php作为后端只需要给angular提供数据
一般来说,jquery是用$.get来和后台交互,angular是用$http , ngResource(RESTful APIs)来进行后台交互
那么我不想这样,我希望前端直接调用后台函数。
我想到了 hprose
于是前台我这样设计


<htML>
<head>
<script type="text/javascript" src="hprose.js" flashpath="/"></script>
<script src="//cdn.bootcss.COM/@R_304_235@/1.4.4/angular.js"></script>
<script>
var server = new HproseHttpClient("http://localhost/index.php", ["mainInit"]);
angular.module("demo" , [])
.controller( 'demoController' , function($scope){
    
    $scope.contents = "hehe";
     server.mainInit("User@LOGin", {name:"personOne" , password:"1478520"} , function(result) {
         $scope.contents = result;
         $scope.$apply();
    });
 
});
</script>
</head>
<body ng-app="demo">
<div ng-controller="demoController">
    <h1 >{{contents}}</h1>
</div>
</body>
</html>

里面的server是一个全局的变量,以保证我能在angluar的各各controller中进行调用
server的mainInit方法(也是后台php的入口函数)
第一个参数是调用的类和方法名
第二个参数是方法需要的参数
第三个参数是成功的回调函数

(具体的hprose的 js和php的用法大家请看官网的github,特别里面的README )

下面要说后台了,

//index.php
<?php
    require_once('../src/Hprose.php');
    require_once(  __DIR__ .'/vendor/autoload.php');
    function mainInit($class_action,$args) {
        $info = explode('@' , $class_action);
        $classname = "app\".$info[0];
        $method = $info[1];
        $object  = new $className;
        return $object->$method($args);
    }
    
    $server = new HproseHttpServer();
    $server->setErrorTypes(E_ALL);
    $server->setDebugEnabled();
    $server->addFunction('mainInit');
    $server->start();

这个的写法就是 hprose 的server端写法
这里我用了composer的自动加载 ( composer请看岁寒老师的博客
我的想法就是js直接调用php的函数,进行获取数据至于怎么调用php,这个交给hprose.
后台要做的就是获取数据交给前台
至于后台如何进行规划,就类似与一般的php框架了
觉得这个想法有点类似与restful,但也不太一样,
比如我不需要考虑请求方式对应的操作方式.
之所以有这个想法是最近公司用Meteor,meteor给了我这个启发。
比如如果前端的数据变动了
使用angular的 watch

    $scope.$watch('user' , function($new_data,  $old_data){
        server.mainInit("User@update" , $new_data ,function(){{
            
        }});
    })

我的本意是使用php模拟meteor做一个类似的东西,
今天的这个思路是一个副产品,不过我觉得这个方式进行项目开发的话也是可以
大家有什么建议吗?

脚本宝典总结

以上是脚本宝典为你收集整理的今天的灵感大杂烩全部内容,希望文章能够帮你解决今天的灵感大杂烩所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。