如何将CakePHP 3应用程序与Firebase

时间:2016-06-22 16:36:07

标签: php cakephp firebase cakephp-3.0 angularfire

阅读了几个小时的文档和教程后,我终于陷入了更多的困惑。所以,在这里,我要求你的帮助/提示,​​我真的很感激任何努力都可以帮助我更进一步。对不起我可能犯的任何错误,我对这个话题很新手,所以说。

我正在构建一个Web应用程序,实际上是一个网页,它会在收到来自外部源的GET / POST请求后立即开始运行。因此,如果收到任何请求,页面将异步更新,我之后想到在前端使用AngularJS和AngularFire。我知道还有很多其他的方法,也可能更简单,但我很好奇如何将我的CakePHP应用程序与Firebase平台集成。所以,现在让我们坚持使用 CakePHP + Firebase 解决方案。

到目前为止,使用SDK Firebase PHP Client非常有意义,但是,我仍然对需要操作的文件感到困惑。由于根本没有多少 - 我到目前为止没有找到 - 使用CakePHP3框架和Firebase的例子,我被困在这里,我真的很感激这里有任何帮助。首先,这个代码在链接中给出,我想知道它是如何工作的以及那些变量和常量代表什么。

const DEFAULT_URL = 'https://kidsplace.firebaseio.com/';
const DEFAULT_TOKEN = 'MqL0c8tKCtheLSYcygYNtGhU8Z2hULOFs9OKPdEp';
const DEFAULT_PATH = '/firebase/example';

$firebase = new \Firebase\FirebaseLib(DEFAULT_URL, DEFAULT_TOKEN);

// --- storing an array ---
$test = array(
    "foo" => "bar",
    "i_love" => "lamp",
    "id" => 42
);
$dateTime = new DateTime();
$firebase->set(DEFAULT_PATH . '/' . $dateTime->format('c'), $test);

// --- storing a string ---
$firebase->set(DEFAULT_PATH . '/name/contact001', "John Doe");

// --- reading the stored string ---
$name = $firebase->get(DEFAULT_PATH . '/name/contact001');

这是主要问题,假设我在我的应用程序的一个端点上有测试功能,请说 www.example.com/visits/test ,我该如何制作确保我的应用程序已集成到Firebase平台,并且正在连续收听发送到该终点的任何请求?

1 个答案:

答案 0 :(得分:3)

以下是我如何解决它,只是你知道。需要将测试结束点添加到您正在使用的控制器文件中。您可以使用项目文件中的“项目设置”找到令牌。下面是一个简单的例子。

public function test()
{
  $DEFAULT_URL = 'YOUR_URL';
  $DEFAULT_TOKEN = 'YOUR_TOKEN';
  $DEFAULT_PATH = '/';

  $firebase = new \Firebase\FirebaseLib($DEFAULT_URL, $DEFAULT_TOKEN);

  $lines = [
    "I had a problem once",
    "I used Java to solve it",
    "Now, I have ProblemFactory",
  ];

  foreach ($lines as $line) {
    $foo = $firebase->push($DEFAULT_PATH."code/",$line);
    echo "child_added";
    sleep(0.1);
    echo "<br> ";
  }

然后,为了捕获前端添加的行,您可以使用类似于下面代码的代码。您可以通过单击添加“firebase到您的Web应用程序”按钮轻松地从firebase控制台访问适合您代码的版本,或者像这样。

<script src="https://www.gstatic.com/firebasejs/live/3.0/firebase.js">  </script>
<script>
  // Initialize Firebase
  var config = {
    apiKey: "YOUR_API_KEY",
    authDomain: "YOUR-DOMAIN",
    databaseURL: "YOUR_URL",
    storageBucket: "YOUR_BUCKET",
  };
  firebase.initializeApp(config);

  var codeRef = firebase.database().ref('code/');
  codeRef.on('child_added', function(data) {
  console.log(data.val());
  });
</script>

我还没有完成应用程序,但是,这种洞察力可以帮助您处理类似的问题。