1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
|
--TEST--
Test symlink(), linkinfo(), link() and is_link() functions : usage variations - link name stored in an array/object
--SKIPIF--
<?php
if (substr(PHP_OS, 0, 3) == 'WIN') {
die('skip no symlinks on Windows');
}
?>
--FILE--
<?php
/* Prototype: bool symlink ( string $target, string $link );
Description: creates a symbolic link to the existing target with the specified name link
Prototype: bool is_link ( string $filename );
Description: Tells whether the given file is a symbolic link.
Prototype: bool link ( string $target, string $link );
Description: Create a hard link
Prototype: int linkinfo ( string $path );
Description: Gets information about a link
*/
/* Variation 1 : Creating links across directories where linkname is stored as an object and array member */
// creating temp directory which will contain temp file and links created
$file_path = dirname(__FILE__);
$dirname = "$file_path/symlink_link_linkinfo_is_link_variation1/test/home";
mkdir($dirname, 0777, true);
// creating temp file; links are created to this file later on
$filename = "$file_path/symlink_link_linkinfo_is_link_variation1/symlink_link_linkinfo_is_link_variation1.tmp";
$fp = fopen($filename, "w");
fclose($fp);
echo "*** Testing symlink(), link(), linkinfo() and is_link() with linknames stored as members in an object ***\n";
class object_temp {
var $linkname;
function object_temp($link) {
$this->linkname = $link;
}
}
$obj = new object_temp("$dirname/symlink_link_linkinfo_is_link_link.tmp");
/* Testing on soft links */
echo "\n-- Working with soft links --\n";
// creating soft link
var_dump( symlink($filename, $obj->linkname) );
// check if the link exists
var_dump( linkinfo($obj->linkname) );
// check if link is soft link
var_dump( is_link($obj->linkname) );
// delete the link created
unlink($obj->linkname);
// clear the cache
clearstatcache();
/* Testing on hard links */
echo "\n-- Working with hard links --\n";
// creating hard link
var_dump( link($filename, $obj->linkname) );
// check if the link exists
var_dump( linkinfo($obj->linkname) );
// check if link is soft link; expected: false as the link is a hardlink
var_dump( is_link($obj->linkname) );
// delete the link created
unlink($obj->linkname);
// clear the cache
clearstatcache();
echo "\n*** Testing symlink(), link(), linkinfo() and is_link() with linknames stored as members of an array ***\n";
$link_arr = array("$dirname/symlink_link_linkinfo_is_link_link.tmp");
/* Testing on soft links */
echo "\n-- Working with soft links --\n";
// creating soft link
var_dump( symlink($filename, $link_arr[0]) );
// check if the link exist
var_dump( linkinfo($link_arr[0]) );
// check if link is soft link
var_dump( is_link($link_arr[0]) );
// delete the link created
unlink($link_arr[0]);
// clear the cache
clearstatcache();
/* Testing on hard links */
echo "\n-- Working with hard links --\n";
// creating hard link
var_dump( link($filename, $link_arr[0]) );
// check if the link exist
var_dump( linkinfo($link_arr[0]) );
// check if link is soft link; expected: false as this is a hardlink
var_dump( is_link($link_arr[0]) );
// delete the links created
unlink($link_arr[0]);
// clear the cache
clearstatcache();
echo "Done\n";
?>
--CLEAN--
<?php
$file_path = dirname(__FILE__);
$dirname = "$file_path/symlink_link_linkinfo_is_link_variation1";
unlink("$dirname/symlink_link_linkinfo_is_link_variation1.tmp");
rmdir("$dirname/test/home");
rmdir("$dirname/test");
rmdir($dirname);
?>
--EXPECTF--
*** Testing symlink(), link(), linkinfo() and is_link() with linknames stored as members in an object ***
-- Working with soft links --
bool(true)
int(%d)
bool(true)
-- Working with hard links --
bool(true)
int(%d)
bool(false)
*** Testing symlink(), link(), linkinfo() and is_link() with linknames stored as members of an array ***
-- Working with soft links --
bool(true)
int(%d)
bool(true)
-- Working with hard links --
bool(true)
int(%d)
bool(false)
Done
|