Browse Source

switched PHP Lumen DB interactions to use ORM

Keith Newman 10 years ago
parent
commit
736c3f38e3

+ 11 - 0
frameworks/PHP/lumen/app/Http/Models/Fortune.php

@@ -0,0 +1,11 @@
+<?php
+
+use Illuminate\Database\Eloquent\Model;
+
+class Fortune extends Model {
+
+	protected $table = "Fortune";
+	public $timestamps = false;
+}
+
+?>

+ 10 - 0
frameworks/PHP/lumen/app/Http/Models/World.php

@@ -0,0 +1,10 @@
+<?php
+use Illuminate\Database\Eloquent\Model;
+
+class World extends Model {
+
+	protected $table = "World";
+	public $timestamps = false;
+}
+
+?>

+ 77 - 0
frameworks/PHP/lumen/app/Http/routes-backup.php

@@ -0,0 +1,77 @@
+<?php
+
+use Illuminate\Http\Request;
+
+function update_world(&$world, $key) {
+	$world->randomNumber = mt_rand(1, 10000);
+}
+
+function compare_fortunes($f1, $f2) {
+	return strcmp ($f1->message, $f2->message);
+}
+
+$app->get("plaintext", function() use ($app) {
+    return response("Hello, World!")->header("Content-Type", "text/plain; charset=utf-8");
+});
+
+$app->get("json", function() use ($app) {
+	return response()->json(["message" => "Hello, World!"]);
+});
+
+$app->get("db", function() use ($app) {
+	$id = mt_rand(1, 10000);
+	$results = DB::select('select * from world where id = ?', [$id]);
+	return response()->json($results[0]);
+});
+
+$app->get("queries", function(Request $request) {
+        $query_count = $request->input("queries");
+	if ($query_count < 1) {
+		$query_count = 1;
+	}
+	if ($query_count > 500) {
+		$query_count = 500;
+	}
+
+	$worlds = array();
+
+	for ($i = 0; $i < $query_count; $i++) {
+		$id = mt_rand(1, 10000);
+		$world = DB::select("select * from world where id= ?", [$id]);
+		$worlds[] = $world[0];
+	}
+
+	return response()->json($worlds);
+});
+
+$app->get("updates/{queries}", function($queries) use($app) {
+	$query_count = $queries;
+	if ($query_count < 1) {
+		$query_count = 1;
+	}
+	if ($query_count > 500) {
+		$query_count = 500;
+	}
+
+	$worlds = array();
+
+	for ($i = 0; $i < $query_count; $i++) {
+		$id = mt_rand(1, 10000);
+		$world = DB::select("select * from world where id= ?", [$id]);
+		$worlds[] = $world[0];
+	}
+
+	array_walk($worlds, "update_world");
+
+	return response()->json($worlds);
+});
+
+$app->get("fortune", function() use ($app) {
+	$fortunes = DB::select("select * from fortune");
+	$new_fortune = new stdClass;
+	$new_fortune->id = 0;
+	$new_fortune->message = "Additional fortune added at request time.";
+	$fortunes[] = $new_fortune;
+	usort($fortunes, "compare_fortunes");
+	return view("fortune", ["fortunes" => $fortunes]);
+});

+ 19 - 24
frameworks/PHP/lumen/app/Http/routes.php

@@ -2,16 +2,11 @@
 
 use Illuminate\Http\Request;
 
-function update_world(&$world, $key) {
-	$world->randomNumber = mt_rand(1, 10000);
-}
-
-function compare_fortunes($f1, $f2) {
-	return strcmp ($f1->message, $f2->message);
-}
+require_once __DIR__.'/Models/World.php';
+require_once __DIR__.'/Models/Fortune.php';
 
 $app->get("plaintext", function() use ($app) {
-    return response("Hello, World!")->header("Content-Type", "text/plain; charset=utf-8");
+    return response("Hello, World!")->header("Content-Type", "text/plain");
 });
 
 $app->get("json", function() use ($app) {
@@ -20,12 +15,12 @@ $app->get("json", function() use ($app) {
 
 $app->get("db", function() use ($app) {
 	$id = mt_rand(1, 10000);
-	$results = DB::select('select * from world where id = ?', [$id]);
-	return response()->json($results[0]);
+	$result = World::find($id);
+	return response()->json($result);
 });
 
 $app->get("queries", function(Request $request) {
-        $query_count = $request->input("queries");
+	$query_count = $request->input("queries");
 	if ($query_count < 1) {
 		$query_count = 1;
 	}
@@ -37,15 +32,15 @@ $app->get("queries", function(Request $request) {
 
 	for ($i = 0; $i < $query_count; $i++) {
 		$id = mt_rand(1, 10000);
-		$world = DB::select("select * from world where id= ?", [$id]);
-		$worlds[] = $world[0];
+		$world = World::find($id);
+		$worlds[] = $world;
 	}
 
 	return response()->json($worlds);
 });
 
-$app->get("updates/{queries}", function($queries) use($app) {
-	$query_count = $queries;
+$app->get("updates", function(Request $request) {
+	$query_count = $request->input("queries");
 	if ($query_count < 1) {
 		$query_count = 1;
 	}
@@ -57,21 +52,21 @@ $app->get("updates/{queries}", function($queries) use($app) {
 
 	for ($i = 0; $i < $query_count; $i++) {
 		$id = mt_rand(1, 10000);
-		$world = DB::select("select * from world where id= ?", [$id]);
-		$worlds[] = $world[0];
+		$world = World::find($id);
+		$world->randomNumber = mt_rand(1, 10000);
+		$world->save();
+		$worlds[] = $world;
 	}
 
-	array_walk($worlds, "update_world");
-
 	return response()->json($worlds);
 });
 
 $app->get("fortune", function() use ($app) {
-	$fortunes = DB::select("select * from fortune");
-	$new_fortune = new stdClass;
-	$new_fortune->id = 0;
-	$new_fortune->message = "Additional fortune added at request time.";
+	$fortunes = Fortune::all()->toArray();
+	$new_fortune = array("id" => 0, "message" => "Additional fortune added at request time.");
 	$fortunes[] = $new_fortune;
-	usort($fortunes, "compare_fortunes");
+	$fortunes = array_sort($fortunes, function($value) {
+		return $value["message"];
+	});
 	return view("fortune", ["fortunes" => $fortunes]);
 });

+ 1 - 1
frameworks/PHP/lumen/benchmark_config.json

@@ -9,7 +9,7 @@
       "db_url": "/db",
       "query_url": "/queries?queries=",
       "fortune_url": "/fortune",
-      "update_url": "/updates/",
+      "update_url": "/updates?queries=",
       "port": 8080,
       "approach": "Realistic",
       "classification": "Micro",

+ 1 - 0
frameworks/PHP/lumen/bootstrap/app.php

@@ -5,6 +5,7 @@ Dotenv::load(__DIR__.'/../');
 
 $app = new Laravel\Lumen\Application;
 $app->withFacades();
+$app->withEloquent();
 
 $app->singleton(
     'Illuminate\Contracts\Debug\ExceptionHandler',

+ 1 - 1
frameworks/PHP/lumen/resources/views/fortune.php

@@ -11,7 +11,7 @@
 </tr>
 <?php
 foreach($fortunes as $f) {
-	echo ("<tr><td>" . $f->id . "</td><td>" . htmlspecialchars($f->message) . "</td></tr>");
+	echo ("<tr><td>" . $f["id"] . "</td><td>" . e($f["message"]) . "</td></tr>");
 }
 ?>
 </table>