今天的靈感大雜燴

php做爲後臺程序只提供數據,全部的展現都交給前臺
而前臺中數據和界面dom的雙向綁定使用angular。javascript

前端全給angluar進行掌控,php做爲後端只須要給angular提供數據
通常來講,jquery是用$.get來和後臺交互,angular是用$http , ngResource(RESTful APIs)來進行後臺交互
那麼我不想這樣,我但願前端直接調用後臺函數。
我想到了 hprose
因而前臺我這樣設計php

<html>
<head>
<script type="text/javascript" src="hprose.js" flashpath="/"></script>
<script src="//cdn.bootcss.com/angular.js/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的入口函數)
第一個參數是調用的類和方法名
第二個參數是方法須要的參數
第三個參數是成功的回調函數css

(具體的hprose的 js和php的用法你們請看官網的github,特別裏面的README )html

下面要說後臺了,前端

//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的 watchjava

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

個人本意是使用php模擬meteor作一個相似的東西,
今天的這個思路是一個副產品,不過我以爲這個方式進行項目開發的話也是能夠
你們有什麼建議嗎?jquery

相關文章
相關標籤/搜索