mboost-dp1
PHP MVC OOP Projekt
- Forside
- ⟨
- Forum
- ⟨
- Programmering
@arne: hmm
Warning: file_get_contents(http://localhost:81/restsrv.php?id=123): failed to open stream: Connection refused
Warning: file_get_contents(http://localhost:81/restsrv.php?id=123): failed to open stream: Connection refused
CBM (51) skrev:@arne: hmm
Warning: file_get_contents(http://localhost:81/restsrv.php?id=123): failed to open stream: Connection refused
Hoster du din restsrv.php på localhost port 81?
Eller har du bare lavet kopi pasta fra Arnes indlæg?
@arne:
jeg prøvede dette uden held..
jeg fik en blank side ved at kalde klient php filen
<?php
$runfile = '.../restsrv.php?id=123';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $runfile);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec ($ch);
$nogen = json_decode($content);
echo $nogen->id . ' ' . $nogen->firstname . ' ' . $nogen->lastname . "\r\n";
?>
jeg har ikke mulighed for at se php fejl loggen
jeg prøvede dette uden held..
jeg fik en blank side ved at kalde klient php filen
<?php
$runfile = '.../restsrv.php?id=123';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $runfile);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec ($ch);
$nogen = json_decode($content);
echo $nogen->id . ' ' . $nogen->firstname . ' ' . $nogen->lastname . "\r\n";
?>
jeg har ikke mulighed for at se php fejl loggen
@arne: dette eksempel ser ud til at virke (efter tilrettelser) :-) :-)
http://phppot.com/php/php-restful-web-service/
jeg havde først tilberedt kopi pasta og kom så til at tænke på at jeg skulle rette i eksemplet.. ups :-)
men jeg fik samme fejl (med anden url) efter jeg rettede det til
er det en begrænsning hos den gratis php host jeg bruger ?
http://phppot.com/php/php-restful-web-service/
IT-ekspert Yvossen (52) skrev:
Hoster du din restsrv.php på localhost port 81?
Eller har du bare lavet kopi pasta fra Arnes indlæg?
jeg havde først tilberedt kopi pasta og kom så til at tænke på at jeg skulle rette i eksemplet.. ups :-)
men jeg fik samme fejl (med anden url) efter jeg rettede det til
er det en begrænsning hos den gratis php host jeg bruger ?
arne_v (55) skrev:Og inden jeg bliver lynchet.
parse_str($_SERVER['QUERY_STRING']);
skal nok være:
parse_str($_SERVER['QUERY_STRING'], $q);
$id = $q['id'];
:-)
Sikkerhed.
nu virker det :)
jeg havde glemt at indsætte den rette URL i min allerførste test og rettede det hurtigt som jeg også skrev :)
men
parse_str($_SERVER['QUERY_STRING'], $q);
$id = $q['id'];
gjorde udslaget...
restcli.php
<?php
$resp = file_get_contents('.../restsrv.php?id=123');
$nogen = json_decode($resp);
echo $nogen->id . ' ' . $nogen->firstname . ' ' . $nogen->lastname . "\r\n";
?>
restsrv.php
<?php
class Person {
public $id;
public $firstname;
public $lastname;
public function __construct($id, $firstname, $lastname) {
$this->id = $id;
$this->firstname = $firstname;
$this->lastname = $lastname;
}
}
parse_str($_SERVER['QUERY_STRING'], $q);
$id = $q['id'];
$nogen = new Person($id, 'Anders', 'And');
header('Content-type: application/json');
echo json_encode($nogen);
?>
@arne: enig. Nu har jeg ihvertfald det jeg skal bruge til at kunne hente testdata til mit site.
Jeg mener bestemt jeg har haft sat korrekt url ind i efterflg test men har rodet med en masse andet samtidig så muligheden foreligger at det ikke var tilfældet... Jeg kan for sjov skyld teste igen i morgen med
parse_str($_SERVER['QUERY_STRING']);
Kan også være jeg havde glemt at fjerne port angivelsen...
Jeg mener bestemt jeg har haft sat korrekt url ind i efterflg test men har rodet med en masse andet samtidig så muligheden foreligger at det ikke var tilfældet... Jeg kan for sjov skyld teste igen i morgen med
parse_str($_SERVER['QUERY_STRING']);
Kan også være jeg havde glemt at fjerne port angivelsen...
@arne: ok, hmm.. kan jeg sende et objekt afsted som parameter og altså udveksle php objekter i stedet for simple data typer mellem server og klient?
CBM (62) skrev:@arne: ok, hmm.. kan jeg sende et objekt afsted som parameter og altså udveksle php objekter i stedet for simple data typer mellem server og klient?
HTTP har en request body på f.eks. POST og PUT requests hvor du kan serialize dit PHP objekt som JSON og sende med over og dermed lade din web service deserialize objektet ingen.
RESTful API påskriver at du bruger HTTP verbs som følgende:
GET: Read (uden key, liste af objekter. med key, specifik objekt)
POST: Create
PUT: Create/Update (på specifik objekt key)
DELETE: Delete
Hvis du ønsker at bruge RESTful.
IT-ekspert Yvossen (63) skrev:CBM (62) skrev:@arne: ok, hmm.. kan jeg sende et objekt afsted som parameter og altså udveksle php objekter i stedet for simple data typer mellem server og klient?
HTTP har en request body på f.eks. POST og PUT requests hvor du kan serialize dit PHP objekt som JSON og sende med over og dermed lade din web service deserialize objektet ingen.
RESTful API påskriver at du bruger HTTP verbs som følgende:
GET: Read (uden key, liste af objekter. med key, specifik objekt)
POST: Create
PUT: Create/Update (på specifik objekt key)
DELETE: Delete
Hvis du ønsker at bruge RESTful.
Takker! Kunne du bikse et hurtigt eksempel sammen? :-)
CBM (64) skrev:IT-ekspert Yvossen (63) skrev:CBM (62) skrev:@arne: ok, hmm.. kan jeg sende et objekt afsted som parameter og altså udveksle php objekter i stedet for simple data typer mellem server og klient?
HTTP har en request body på f.eks. POST og PUT requests hvor du kan serialize dit PHP objekt som JSON og sende med over og dermed lade din web service deserialize objektet ingen.
RESTful API påskriver at du bruger HTTP verbs som følgende:
GET: Read (uden key, liste af objekter. med key, specifik objekt)
POST: Create
PUT: Create/Update (på specifik objekt key)
DELETE: Delete
Hvis du ønsker at bruge RESTful.
Takker! Kunne du bikse et hurtigt eksempel sammen? :-)
Desværre ikke, jeg har intet PHP noget-som-helst på min maskine. :-)
https://stackoverflow.com/questions/18866571/recei...
https://stackoverflow.com/questions/21271140/curl-...
Disse to ting burde hvad du skulle have brug for.
hmm... hvad er der galt med flg. kode ?? :
data_1.txt
{"player":"abc","time":"0","from":"2c","to":"3d"}
testsrv.php
<?php
parse_str($_SERVER['QUERY_STRING'], $q);
$id = $q['id'];
if ($id='Hentdata') {
$NR = $q['NR'];
$data = file_get_contents('data_'+$NR+'.txt');
//$assocArray = json_decode($data, true);
header('Content-type: application/json');
//echo json_encode($assocArray);
echo $data;
}
?>
testclient.php
<?php
$resp = file_get_contents('.../testsrv.php?id=HentData&NR=1');
$nogen = json_decode($resp);
echo $nogen->player . ' ' . $nogen->time . ' ' . $nogen->from . ' ' . $nogen->to . "\r\n";
?>
jeg får en blank side når jeg kalder testclient.php
oh nevermind... fandt ud af det...
file_get_contents('data_'.$NR.'.txt');
og ikke
file_get_contents('data_'+$NR+'.txt');
data_1.txt
{"player":"abc","time":"0","from":"2c","to":"3d"}
testsrv.php
<?php
parse_str($_SERVER['QUERY_STRING'], $q);
$id = $q['id'];
if ($id='Hentdata') {
$NR = $q['NR'];
$data = file_get_contents('data_'+$NR+'.txt');
//$assocArray = json_decode($data, true);
header('Content-type: application/json');
//echo json_encode($assocArray);
echo $data;
}
?>
testclient.php
<?php
$resp = file_get_contents('.../testsrv.php?id=HentData&NR=1');
$nogen = json_decode($resp);
echo $nogen->player . ' ' . $nogen->time . ' ' . $nogen->from . ' ' . $nogen->to . "\r\n";
?>
jeg får en blank side når jeg kalder testclient.php
oh nevermind... fandt ud af det...
file_get_contents('data_'.$NR.'.txt');
og ikke
file_get_contents('data_'+$NR+'.txt');
@arne: ideen er at der skal laves en "rigtig" webservice som kan hente de egentlige data fra en database, men jeg skal bruge noget der kan sende test data tilbage i mellemtiden.
Min tanke var at gemme lidt test data i en eller flere text filer som så kunne sendes afsted on demand. Det skal nemlig være muligt at ændre disse data, tanken med txt filerne er så at så kan disse ændringer gemmes persistent som det ville have været tilfældet med en database.
her følger et tænkt eksempel som vil have samme struktur som det projekt jeg arbejder på...
med json encode tænker du da noget i denne stil:
testsrv.php
<?php
parse_str($_SERVER['QUERY_STRING'], $q);
$id = $q['id'];
if ($id='Hentdata') {
$NR = $q['NR'];
$data = file_get_contents('data_'+$NR+'.txt');
header('Content-type: application/json');
echo json_encode($assocArray);
}
?>
?
ville gerne lave en objekt model, men det er vanskeligt at finde nogle virkelig gode oop tuts til php...
fx kunne jeg tænke mig noget i denne stil:
<?php
class Computer {
public $SerieNr = 0;
public $CPU = '';
public $GFX = '';
public $VRReady = false;
public $ServiceDate;
public function __construct
($SerieNr, $CPU, $GFX, $VRReady, $ServiceDate)
{
$this->SerieNr = $SerieNr;
$this->CPU = $CPU;
$this->GFX = $GFX;
$this->VRReady = $VRReady;
$this->ServiceDate = $ServiceDate;
}
}
?>
* gemme et array af computer objekter i en fil
* hente og gemme data om et enkelt medlem af array
* hente og gemme data for hele array'et
* gemme specifik ændring af specifik computer fra array
<?php
class Ejer {
public $Nr = 0;
public $Navn = '';
public $Adr = '';
public function __construct
($Nr, $Navn, $Adr)
{
$this->Nr = $Nr;
$this->Navn = $Navn;
$this->Adr = $Adr;
}
}
?>
ville så gerne kæde 1 ejer sammen med et array af computere
ie. EJER 1...1 ---------- 0...* COMPUTER
en "EJER" kan have 0 til mange "COMPUTER"
en "COMPUTER" har altid nøjagtig 1 "EJER"
have et array af ejere
* hente og gemme data om en enkelt ejer
<?php
class Admin {
public $Nr = 0;
public $Navn = '';
public $Adr = '';
public function __construct
($Nr, $Navn, $Adr)
{
$this->Nr = $Nr;
$this->Navn = $Navn;
$this->Adr = $Adr;
}
}
?>
Admin skal have en liste over ejere hvis informationer og computere, han kan administrere
når der logges ind, er det enten som ejer(bruger) eller admin,
som ejer kan man administrere egne maskiner
som admin kan man administrere egne maskiner og maskiner tilhørende de ejere man administrerer, som admin vælger man i hovedmenuen, hvilken ejer man vil administrere
ville så gerne kæde 1 admin sammen med et array af ejere
ie. ADMIN 0...10 ---------- 0...* EJER
en "ADMIN" kan have 0 til mange "EJER"
en "EJER" kan have 0 til 10 "ADMIN"
men jeg ved ikke om det er muligt i PHP
ADMIN 0.10-0.* EJER 1.1-0.* COMPUTER
Min tanke var at gemme lidt test data i en eller flere text filer som så kunne sendes afsted on demand. Det skal nemlig være muligt at ændre disse data, tanken med txt filerne er så at så kan disse ændringer gemmes persistent som det ville have været tilfældet med en database.
her følger et tænkt eksempel som vil have samme struktur som det projekt jeg arbejder på...
med json encode tænker du da noget i denne stil:
testsrv.php
<?php
parse_str($_SERVER['QUERY_STRING'], $q);
$id = $q['id'];
if ($id='Hentdata') {
$NR = $q['NR'];
$data = file_get_contents('data_'+$NR+'.txt');
header('Content-type: application/json');
echo json_encode($assocArray);
}
?>
?
ville gerne lave en objekt model, men det er vanskeligt at finde nogle virkelig gode oop tuts til php...
fx kunne jeg tænke mig noget i denne stil:
<?php
class Computer {
public $SerieNr = 0;
public $CPU = '';
public $GFX = '';
public $VRReady = false;
public $ServiceDate;
public function __construct
($SerieNr, $CPU, $GFX, $VRReady, $ServiceDate)
{
$this->SerieNr = $SerieNr;
$this->CPU = $CPU;
$this->GFX = $GFX;
$this->VRReady = $VRReady;
$this->ServiceDate = $ServiceDate;
}
}
?>
* gemme et array af computer objekter i en fil
* hente og gemme data om et enkelt medlem af array
* hente og gemme data for hele array'et
* gemme specifik ændring af specifik computer fra array
<?php
class Ejer {
public $Nr = 0;
public $Navn = '';
public $Adr = '';
public function __construct
($Nr, $Navn, $Adr)
{
$this->Nr = $Nr;
$this->Navn = $Navn;
$this->Adr = $Adr;
}
}
?>
ville så gerne kæde 1 ejer sammen med et array af computere
ie. EJER 1...1 ---------- 0...* COMPUTER
en "EJER" kan have 0 til mange "COMPUTER"
en "COMPUTER" har altid nøjagtig 1 "EJER"
have et array af ejere
* hente og gemme data om en enkelt ejer
<?php
class Admin {
public $Nr = 0;
public $Navn = '';
public $Adr = '';
public function __construct
($Nr, $Navn, $Adr)
{
$this->Nr = $Nr;
$this->Navn = $Navn;
$this->Adr = $Adr;
}
}
?>
Admin skal have en liste over ejere hvis informationer og computere, han kan administrere
når der logges ind, er det enten som ejer(bruger) eller admin,
som ejer kan man administrere egne maskiner
som admin kan man administrere egne maskiner og maskiner tilhørende de ejere man administrerer, som admin vælger man i hovedmenuen, hvilken ejer man vil administrere
ville så gerne kæde 1 admin sammen med et array af ejere
ie. ADMIN 0...10 ---------- 0...* EJER
en "ADMIN" kan have 0 til mange "EJER"
en "EJER" kan have 0 til 10 "ADMIN"
men jeg ved ikke om det er muligt i PHP
ADMIN 0.10-0.* EJER 1.1-0.* COMPUTER
hvordan kan testx være true i denne sammenhæng ?
<div class="uk-margin">
<label class="uk-form-label" for="form-horizontal-text1">bla bla: </label>
<div class="uk-form-controls">
<input class="uk-input" id="form-horizontal-text1" type="text" placeholder="" value="<?php echo $data->ABC; ?>">
</div>
</div>
<?php
$testx = TRUE;
$testinfo=($data->ABC);
if ($testinfo='false') { $testx = FALSE; }
if ($testinfo='true') { $testx = TRUE; }
?>
<?php $checked = ( TRUE === $testx ) ? ' checked' : ''; ?>
<label><input class="uk-checkbox" type="checkbox" <?php echo $checked; ?>> test</label>
$data->ABC er "false" iflg. min input box men min checkbox bliver stadig sat ?
- mangler en bedre måde at gøre det på... php's true/false struktur er lidt forvirrende :/ men som jeg forstår
$checked = ( TRUE === $testx ) ? ' checked' : '';
så er $checked = ' checked' når testx er true og
$checked = '' når testx er false?
<div class="uk-margin">
<label class="uk-form-label" for="form-horizontal-text1">bla bla: </label>
<div class="uk-form-controls">
<input class="uk-input" id="form-horizontal-text1" type="text" placeholder="" value="<?php echo $data->ABC; ?>">
</div>
</div>
<?php
$testx = TRUE;
$testinfo=($data->ABC);
if ($testinfo='false') { $testx = FALSE; }
if ($testinfo='true') { $testx = TRUE; }
?>
<?php $checked = ( TRUE === $testx ) ? ' checked' : ''; ?>
<label><input class="uk-checkbox" type="checkbox" <?php echo $checked; ?>> test</label>
$data->ABC er "false" iflg. min input box men min checkbox bliver stadig sat ?
- mangler en bedre måde at gøre det på... php's true/false struktur er lidt forvirrende :/ men som jeg forstår
$checked = ( TRUE === $testx ) ? ' checked' : '';
så er $checked = ' checked' når testx er true og
$checked = '' når testx er false?
prøvede dette uden held...
if ($testinfo='false') { $checked = ''; } else { $checked = ' checked'; }
input box skriver true men checkbox er unchecked uanset hvad?
ændrer jeg data i filen til false er
både checkbox false og input box skriver false ( som forventet )
jeg tænker at det kan ikke være cache, da input boxens indhold så også ville være anderledes
... nu har jeg prøvet dette...
$testinfo=($data->ABC);
if ($testinfo='false') { $checked = ''; } else { $checked = ' checked'; }
$testinfo er altid 'false' ??? uanset om den modtager true eller false fra text filen ??
tekst fil der sendes data fra:
{"ID":"1","ABC":"false","DEF":"true"}
rå data er { ???
$resp = file_get_contents('.../testsrv.php?id=HentStamdata&PersonID=1');
$raw = $resp;
if ($testinfo='false') { $checked = ''; } else { $checked = ' checked'; }
input box skriver true men checkbox er unchecked uanset hvad?
ændrer jeg data i filen til false er
både checkbox false og input box skriver false ( som forventet )
jeg tænker at det kan ikke være cache, da input boxens indhold så også ville være anderledes
... nu har jeg prøvet dette...
$testinfo=($data->ABC);
if ($testinfo='false') { $checked = ''; } else { $checked = ' checked'; }
$testinfo er altid 'false' ??? uanset om den modtager true eller false fra text filen ??
tekst fil der sendes data fra:
{"ID":"1","ABC":"false","DEF":"true"}
rå data er { ???
$resp = file_get_contents('.../testsrv.php?id=HentStamdata&PersonID=1');
$raw = $resp;
rettelse:
$resp = file_get_contents('.../testsrv.php?id=Hentdata&NR=1');
$raw = $resp;
fandt fejlen...
skal være == og ikke =
$resp = file_get_contents('.../testsrv.php?id=Hentdata&NR=1');
$raw = $resp;
fandt fejlen...
skal være == og ikke =
if ($testinfo='false') { $testx = FALSE; }
if ($testinfo='true') { $testx = TRUE; }
skal vel vaere:
if ($testinfo=='false') { $testx = FALSE; }
if ($testinfo=='true') { $testx = TRUE; }
eller:
if ($testinfo==='false') { $testx = FALSE; }
if ($testinfo==='true') { $testx = TRUE; }
?
if ($testinfo='true') { $testx = TRUE; }
skal vel vaere:
if ($testinfo=='false') { $testx = FALSE; }
if ($testinfo=='true') { $testx = TRUE; }
eller:
if ($testinfo==='false') { $testx = FALSE; }
if ($testinfo==='true') { $testx = TRUE; }
?
@arne: præcis... det var en simpel fejl... en klassiker.... jeg skrev = hvor jeg mente == og ja... jeg valgte at gøre dette..
if ($data->ABC=='false') { $checked = ''; } else { $checked = ' checked'; }
er der ikke noget med at == er lig med og === er identisk ?
så jeg skal faktisk bruge === ?
begge ser ud til at virke
... pinlig fejl :S <-- I blame Pascal :-)
if ($data->ABC=='false') { $checked = ''; } else { $checked = ' checked'; }
er der ikke noget med at == er lig med og === er identisk ?
så jeg skal faktisk bruge === ?
begge ser ud til at virke
... pinlig fejl :S <-- I blame Pascal :-)
CBM (70) skrev:ville gerne lave en objekt model, men det er vanskeligt at finde nogle virkelig gode oop tuts til php...
Til inspiration:
<?php
namespace Server\DomainLayer {
class User {
public $id;
public $name;
public $computers;
public function __construct($id, $name, $computers = array()) {
$this->id = $id;
$this->name = $name;
$this->computers = $computers;
}
}
class Computer {
public $id;
public $type;
public $users;
public function __construct($id, $type, $users = array()) {
$this->id = $id;
$this->type = $type;
$this->users = $users;
}
}
}
namespace Server\ServiceLayer {
abstract class Manager {
protected $dp; // DataProvider
protected function output($result) {
header('Content-Type: application/json');
echo json_encode($result);
}
public function __construct($dp) {
$this->dp = $dp;
}
public abstract function get($pathid, $query);
}
class UserManager extends Manager {
public function __construct($dp) {
parent::__construct($dp);
}
public function get($pathid, $query) {
if($pathid != null) {
$id = intval($pathid);
$this->output($this->dp->getOneUser($id));
} else {
$this->output($this->dp->getAllUsers());
}
}
}
class ComputerManager extends Manager {
public function __construct($dp) {
parent::__construct($dp);
}
public function get($pathid, $query) {
if($pathid != null) {
$id = intval($pathid);
$this->output($this->dp->getOneComputer($id));
} else {
$this->output($this->dp->getAllComputers());
}
}
}
class Facade {
private $usrmgr;
private $compmgr;
public function __construct($dp) {
$this->usrmgr = new \Server\ServiceLayer\UserManager($dp);
$this->compmgr = new \Server\ServiceLayer\ComputerManager($dp);
}
public function get() {
if(isset($_SERVER['PATH_INFO'])) {
$pathparts = explode('/', $_SERVER['PATH_INFO']);
if(count($pathparts) >= 2) {
$mgrnam = $pathparts[1];
$pathid = count($pathparts) >= 3 ? $pathparts[2] : null;
$query = isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : null;
if($mgrnam == 'user') {
return $this->usrmgr->get($pathid, $query);
} else if($mgrnam == 'computer') {
return $this->compmgr->get($pathid, $query);
} else {
throw new \Exception('Unknown resource');
}
}
}
throw new \Exception('Bad path');
}
public function process() {
$method = $_SERVER['REQUEST_METHOD'];
if($method == 'GET') {
$this->get();
} else {
throw new \Excpetion('Method not supported');
}
}
}
}
namespace Server\DataAccessLayer {
interface DataProvider {
public function getOneUser($id);
public function getAllUSers();
public function getOneComputer($id);
public function getAllComputers();
}
class DummyDataProvider implements DataProvider {
public function getOneUser($id) {
return new \Server\DomainLayer\User(1,'Anders And', array(new \Server\DomainLayer\Computer(1, 'HP PC')));
}
public function getAllUSers() {
return array(new \Server\DomainLayer\User(1,'Anders And', array(new \Server\DomainLayer\Computer(1, 'HP PC'))),
new \Server\DomainLayer\User(2,'Georg Gearløs', array(new \Server\DomainLayer\Computer(2, 'Dell PC'))));
}
public function getOneComputer($id) {
return new \Server\DomainLayer\Computer(1, 'HP PC', array(new \Server\DomainLayer\User(1,'Anders And')));
}
public function getAllComputers() {
return array(new \Server\DomainLayer\Computer(1, 'HP PC', array(new \Server\DomainLayer\User(1,'Anders And'))),
new \Server\DomainLayer\Computer(2, 'Dell PC', new \Server\DomainLayer\User(2,'Georg Gearløs')));
}
}
class DatabaseDataProvider implements DataProvider {
private $db; // PDO connection
public function __construct($db) {
$this->db = $db;
}
public function getOneUser($id) {
// SELECT name FROM users JOIN uc ON users.id=uc.userid JOIN computers ON uc.computerid=computers.id WHERE users.id=?
throw new \Excpetion('Not implemented yet');
}
public function getAllUSers() {
// SELECT name FROM users JOIN uc ON users.id=uc.userid JOIN computers ON uc.computerid=computers.id
throw new \Excpetion('Not implemented yet');
}
public function getOneComputer($id) {
// SELECT type FROM computers JOIN uc ON cmputers.id=uc.computerid JOIN users ON uc.userid=users.id WHERE computers.id=?
throw new \Excpetion('Not implemented yet');
}
public function getAllComputers() {
// SELECT type FROM computers JOIN uc ON cmputers.id=uc.computerid JOIN users ON uc.userid=users.id
throw new \Excpetion('Not implemented yet');
}
}
}
namespace Server {
$fac = new \Server\ServiceLayer\Facade(new \Server\DataAccessLayer\DummyDataProvider());
$fac->process();
}
?>
@arne: jeg prøver at forstå hvordan namespaces og abstrakte klasser fungerer i php men har ikke 100% set lyset endnu...
i mellemtiden har jeg stødt på noget andet som driller...
etview.php
enserver.php
data_ABC1.txt
jeg får denne fejl på etview.php
i mellemtiden har jeg stødt på noget andet som driller...
etview.php
<?php
$jsondata = file_get_contents('.../enserver.php?valg=FindInfo&index=1');
$arr = json_decode($jsondata);
?>
<table class="uk-table uk-table-striped">
<thead>
<tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D</th>
<th>E</th>
<th>F</th>
<th></th>
</tr>
</thead>
<tbody>
<?php
$abcknap = '<td><p uk-margin><a class="uk-button uk-button-default" href="#">TEST</a></p></td></tr>';
foreach($arr->Result as $value){
$DataA = $value->A;
$DataB = $value->B;
$DataC = $value->C;
$DataD = $value->D;
$DataE = $value->E;
$DataF = $value->F;
echo '<tr><td>'.$DataA.'</td>';
echo '<td>'.$DataB.'</td>';
echo '<td>'.$DataC.'</td>';
echo '<td>'.$DataD.'</td>';
echo '<td>'.$DataE.'</td>';
echo '<td>'.$DataF.'</td>';
echo $abcknap;
}
?>
</tbody>
</table>
enserver.php
<?php
parse_str($_SERVER['QUERY_STRING'], $q);
$valg = $q['valg'];
if ($valg==='FindInfo') {
$IndexABC = $q['index'];
$dataABC = file_get_contents('data_ABC'.$IndexABC.'.txt');
echo $dataABC;
}
?>
data_ABC1.txt
{
{"A":"A","B":"B","C":"C","D":"D","E":"E","F":"F","G":"G","H":"H"}
{"A":"I","B":"J","C":"K","D":"L","E":"M","F":"N","G":"O","H":"P"}
{"A":"Q","B":"R","C":"S","D":"T","E":"U","F":"V","G":"W","H":"X"}
}
jeg får denne fejl på etview.php
Warning: Invalid argument supplied for foreach()
CBM (83) skrev:
data_ABC1.txt
{
{"A":"A","B":"B","C":"C","D":"D","E":"E","F":"F","G":"G","H":"H"}
{"A":"I","B":"J","C":"K","D":"L","E":"M","F":"N","G":"O","H":"P"}
{"A":"Q","B":"R","C":"S","D":"T","E":"U","F":"V","G":"W","H":"X"}
}
[
{"A":"A","B":"B","C":"C","D":"D","E":"E","F":"F","G":"G","H":"H"},
{"A":"I","B":"J","C":"K","D":"L","E":"M","F":"N","G":"O","H":"P"},
{"A":"Q","B":"R","C":"S","D":"T","E":"U","F":"V","G":"W","H":"X"}
]
Du ser ud til at have defineret et JSON array forkert.
Lister er
[{},{},{}] ikke {{}{}{}} eller {{},{},{}}
jeg har prøvet disse 4 muligheder...
uanset hvad er %arr tom???
#84:
godt spottet... jeg har rettet det nu, men jeg har stadig samme fejl :'(
linjen:
og $arr er fortsat tom når jeg skriver ud med echo
<?php
$arr = (array) json_decode($jsondata,true);
echo 'TEST ARR ';
echo $arr;
$arr = json_decode($jsondata);
echo 'TEST ARR ';
echo $arr;
$arr = json_decode($jsondata,true);
echo 'TEST ARR ';
echo $arr;
$arr = (array) json_decode($jsondata);
echo 'TEST ARR ';
echo $arr;
?>
uanset hvad er %arr tom???
#84:
godt spottet... jeg har rettet det nu, men jeg har stadig samme fejl :'(
Warning: Invalid argument supplied for foreach() in .../ture.php on line 45
linjen:
"foreach($arr->Result as $value){"
og $arr er fortsat tom når jeg skriver ud med echo
#85
En generel ting, hvis du laver debugging af nogen former for web services, så vil jeg anbefale dig at hente programmet Fiddler (http://www.telerik.com/fiddler), det er et fantastisk værktøj der fungere som en proxy og den logger alle web requests ind/ud af applikationer.
Du kan bruge det til at se om den rette information overføres og du kan endda bruge den til at lave syntetiske HTTP GET, POST, PUT og DELETE requests.
Hvad får du hvis du laver denne?
En generel ting, hvis du laver debugging af nogen former for web services, så vil jeg anbefale dig at hente programmet Fiddler (http://www.telerik.com/fiddler), det er et fantastisk værktøj der fungere som en proxy og den logger alle web requests ind/ud af applikationer.
Du kan bruge det til at se om den rette information overføres og du kan endda bruge den til at lave syntetiske HTTP GET, POST, PUT og DELETE requests.
Hvad får du hvis du laver denne?
echo $jsondata;
Du er noedt til at angribe det systematisk.
1)Få server til at virke
a) test med browser
b) tilret PHP kode indtil du får det rigtige output
2) Få client til at virke
a) udkommenter HTML genererering og bare echo data fra server
b) tilret PHP kode indtil du får de originale data
c) fjern echo af data og erstat med print_r af json_decode af data
d) tilret JSON text fil på server indtil decode giver det rigtige
[gem lige output fra print_r]
e) fjern print_r og aktiver HTML generering
f) tilret HTML generering indtil den virker
1)Få server til at virke
a) test med browser
b) tilret PHP kode indtil du får det rigtige output
2) Få client til at virke
a) udkommenter HTML genererering og bare echo data fra server
b) tilret PHP kode indtil du får de originale data
c) fjern echo af data og erstat med print_r af json_decode af data
d) tilret JSON text fil på server indtil decode giver det rigtige
[gem lige output fra print_r]
e) fjern print_r og aktiver HTML generering
f) tilret HTML generering indtil den virker
<?php
$foo = file_get_contents('.../BlaBlaSrv.php?test=ABC&antal=1');
echo $foo;
$bar = json_decode($foo);
echo "\r\n\r\n\r\n";
echo $bar[0]->a;
echo $bar[1]->a;
?>
men ville gerne have noget ala forall på det array jeg får tilbage, da jeg ikke kan regne med at vide hvor mange resultater der vil være til rådighed
lidt off topic:
ser ud til min ide med 2 stk pi3 inde i en pi-top forbundet med et ethernet kabel godt kunne virke og kan betragtes som et beowulf cluster med 8 cores (2x4)
https://www.linux.com/blog/building-beowulf-cluste...
$foo = file_get_contents('.../BlaBlaSrv.php?test=ABC&antal=1');
echo $foo;
$bar = json_decode($foo);
echo "\r\n\r\n\r\n";
echo $bar[0]->a;
echo $bar[1]->a;
?>
men ville gerne have noget ala forall på det array jeg får tilbage, da jeg ikke kan regne med at vide hvor mange resultater der vil være til rådighed
lidt off topic:
ser ud til min ide med 2 stk pi3 inde i en pi-top forbundet med et ethernet kabel godt kunne virke og kan betragtes som et beowulf cluster med 8 cores (2x4)
https://www.linux.com/blog/building-beowulf-cluste...
well well well, dette virker:
<?php
$foo = file_get_contents('.../BlaBlaSrv.php?test=ABC&antal=1');
echo $foo;
$bar = json_decode($foo);
echo "uden foreach: ";
echo $bar[0]->a;
echo $bar[1]->a;
echo " og med foreach: ";
foreach($bar as $entry)
{
echo $entry->a;
}
?>
<?php
$foo = file_get_contents('.../BlaBlaSrv.php?test=ABC&antal=1');
echo $foo;
$bar = json_decode($foo);
echo "uden foreach: ";
echo $bar[0]->a;
echo $bar[1]->a;
echo " og med foreach: ";
foreach($bar as $entry)
{
echo $entry->a;
}
?>
hmm.. path problem...
jeg har en fil i biblioteket M
som skal inkluderes af en fil i biblioteket V
jeg har prøvet relativ path ift root
./v/fil.php :
<?php include './m/fil.php';?>
virker ikke ...
jeg har prøvet hele stien:
http://www.etsite.com/v/fil.php :
<?php include 'http://www.etsite.com/m/fil.php';?>
virker ikke ....
?
sitet:
http://www.etsite.com
index.php
v->fil.php
m->fil.php
hm nevermind...
<?php include '../m/fil.php';?>
virker... det må være tilsvarende til
gå et step tilbage og gå ind i dir m
ser ud til jeg måske kan nøjes med view og model lag, da projektet er ret simpelt
jeg har en fil i biblioteket M
som skal inkluderes af en fil i biblioteket V
jeg har prøvet relativ path ift root
./v/fil.php :
<?php include './m/fil.php';?>
virker ikke ...
jeg har prøvet hele stien:
http://www.etsite.com/v/fil.php :
<?php include 'http://www.etsite.com/m/fil.php';?>
virker ikke ....
?
sitet:
http://www.etsite.com
index.php
v->fil.php
m->fil.php
hm nevermind...
<?php include '../m/fil.php';?>
virker... det må være tilsvarende til
gå et step tilbage og gå ind i dir m
ser ud til jeg måske kan nøjes med view og model lag, da projektet er ret simpelt
jeg har en php side med en liste af data, på hver linje er der en knap som skal kalde en funktion på serveren som skal ændre de data der vises på php siden...
ie...
nr tekst knap
1 abc [Random-Text]
2 qed [Random-Text]
3 xyz [Random-Text]
1,abc + 2,qed + 3,xyz kommer fra en data fil som serveres til php siden fra en php webservice
jeg vil gerne have en php funktion jeg kan kalde med id nummer som kan generere en ny random tekst på 3 bogstaver som så kan vises på siden i stedet for den aktuelle
jeg vil gerne undgå javascript
kan det lade sig gøre?
ie...
nr tekst knap
1 abc [Random-Text]
2 qed [Random-Text]
3 xyz [Random-Text]
1,abc + 2,qed + 3,xyz kommer fra en data fil som serveres til php siden fra en php webservice
jeg vil gerne have en php funktion jeg kan kalde med id nummer som kan generere en ny random tekst på 3 bogstaver som så kan vises på siden i stedet for den aktuelle
jeg vil gerne undgå javascript
kan det lade sig gøre?
@arne: eksemplet med rnd funktioner var blot et eksempel, det jeg er interesseret i er flowet, hvordan jeg kalder en funktion der via en webservice ændrer data der så skal opdateres...
Kan jeg opdatere mine data lokalt via php og så bagefter remote eller hvordan skal det gøres?
Kan jeg opdatere mine data lokalt via php og så bagefter remote eller hvordan skal det gøres?
hmm.. php problem...
jeg har nogle data lignende dette..
$nogetData :
{
"TestInfo": {
"abc": "1234",
"def": "aa=bla bla+aha=abc:33-22-11,A=foobar 1234,X=YZ",
"something": "little brown fox",
"asdf": "",
"wsad": "123456789",
"ijkl": ""}
}
jeg modtager ovenstående og smider det i et obj via
$obj = json_encode($nogetData);
men jeg kan ikke skrive fx
echo $obj->TestInfo->wsad;
hvordan får jeg fat i wsad ?
jeg har nogle data lignende dette..
$nogetData :
{
"TestInfo": {
"abc": "1234",
"def": "aa=bla bla+aha=abc:33-22-11,A=foobar 1234,X=YZ",
"something": "little brown fox",
"asdf": "",
"wsad": "123456789",
"ijkl": ""}
}
jeg modtager ovenstående og smider det i et obj via
$obj = json_encode($nogetData);
men jeg kan ikke skrive fx
echo $obj->TestInfo->wsad;
hvordan får jeg fat i wsad ?
CBM (97) skrev:svaret viste sig at være dette...
$obj = json_decode($nogetData);
$obj->TestInfo->wasd;
Jeg var faktisk ved at skrive om du ikke skulle decode i stedet, for lidt siden, men tænkte: "Nej, så blind er han sgu ikke og det er bare en fejl da han skrev det på newz.dk"
Jeg tog fejl.
Gå til top
Opret dig som bruger i dag
Det er gratis, og du binder dig ikke til noget.
Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.