403bdc33965810403a47e580ce1eafd01ba1ca8e
[m6w6/ext-psi] / tests / ndbm / ndbm001.phpt
1 --TEST--
2 ndbm
3 --INI--
4 psi.directory={PWD}:{PWD}/../../psi.d
5 --SKIPIF--
6 <?php
7 extension_loaded("psi") or die("skip - need ext/psi");
8 function_exists("psi\\dbm_open") or die("skip - need nbdm support");
9 ?>
10 --FILE--
11 ===TEST===
12 <?php
13 class db {
14 private $db;
15
16 function __construct($file = __DIR__."/ndbm001.db", $o = psi\O_CREAT|psi\O_RDWR, $m = 0640) {
17 if (!$this->db = psi\dbm_open($file, $o, $m)) {
18 throw new Exception(psi\strerror(psi\errno()));
19 }
20 }
21
22 function __destruct() {
23 psi\dbm_close($this->db);
24 }
25
26 function __set($k, $v) {
27 return psi\dbm_store($this->db, $k, $v, psi\DBM_REPLACE);
28 }
29
30 function __get($k) {
31 $val = psi\dbm_fetch($this->db, [
32 "dptr" => $k,
33 "dsize" => strlen($k)
34 ]);
35 if ($val) {
36 return $val["dptr"];
37 }
38 }
39 }
40
41 $db = new db();
42 $db->key = "data";
43 var_dump($db->key);
44 ?>
45 ===DONE===
46 --CLEAN--
47 <?php
48 array_map("unlink", glob(__DIR__."/ndbm001.db*"));
49 ?>
50 --EXPECT--
51 ===TEST===
52 string(4) "data"
53 ===DONE===