A simple example of imitating elFinder and extracting key member methods
The implemented function is:
Implement multiple file copy or move operations
Note: In order to facilitate testing, some judgments have been briefly processed. And it will be in the directory where the program file is located
Create a new test folder as the destination folder. Modification is required if actual use is required.
- ?/**
- * Simple example of copy/move operation: >PHP5
- *
- */
- /**
- * Determine whether the file exists
- *
- */
- function _isFind($filename) {
- return @file_exists($filename);
- }
-
- /* *
- * Determine whether the folder exists? Simple processing: only determine the root directory
- *
- */
- function _isFindDir($dir) {
- $ls = scandir(dirname(__FILE__));
- foreach ($ls as $val) {
- if ($val == $dir) return TRUE;
- }
- return FALSE;
- }
-
- /**
- * Copy or move
- *
- * @param array Source folder array: Simple processing: use the file name as the element value
- * @param string Destination folder
- * @param string Operands: move - move; copy - copy
- * @return bool
- */
- function _copy_move($src = array(), $dst = '', $op = 'move') {
- if ( ! is_array($src )) {
- $src = array($src);
- }
-
- //Determine whether the source file exists?
- foreach ($src as $val) {
- if ( _isFind($val) === FALSE) {
- return _log('Src file not find', $val);
- }
- }
-
- //Determine whether the destination folder exists? If it does not exist, generate it
- //Simple processing: Actual application needs to be modified
- if (_isFindDir($ dst) === FALSE) {
- @mkdir($dst);
- }
-
- //Perform a move or copy operation
- foreach ($src as $val) {
- $_dst = $dst.'/'.basename( $val);
-
- //Determine whether the destination file exists? Operation is not allowed if it exists
- if (_isFind($_dst) === TRUE) {
- return _log('Dst file is exists', $dst);
- } else if (strpos($dst, $val) === 0) {
- return _log('Unable to copy/move into itself');
- }
-
- if (strtolower($op) === 'move') {
- if ( ! rename($val, $_dst)) {
- return _log('Unable to move files', $val);
- }
- } else if (strtolower($op) === 'copy') {
- if ( ! _copy($val, $_dst)) {
- return _log('Unable to copy files', $val);
- }
- }
- }
- return 'Success!';
- }
-
- /**
- * Copy operation
- *
- */
- function _copy($src, $dst) {
- if ( ! is_dir($src)) {
- if ( ! copy($src, $dst)) {
- return _log('Unable to copy files' , $src);
- }
- } else {
- mkdir($dst);
- $ls = scandir($src);
-
- for ($i = 0; $i < count($ls); $i++) {
- if ($ls[$i] == '.' OR $ls[$i] == '..') continue;
-
- $_src = $src.'/'.$ls[$i];
- $_dst = $dst.'/'.$ls[$i];
-
- if ( is_dir($_src)) {
- if ( ! _copy($_src, $_dst)) {
- return _log('Unable to copy files', $_src);
- }
- } else {
- if ( ! copy($_src, $_dst)) {
- return _log('Unable to copy files', $_src);
- }
- }
- }
- }
- return TRUE;
- }
-
- /**
- * Logging
- *
- */
- function _log($msg, $arg = '') {
- if ($arg != '') {
- $msg = "date[" .date('Y-m-d H:i:s')."]tmsg[".$msg."]targ[".$arg."]n";
- } else {
- $msg = "date[".date ('Y-m-d H:i:s')."]tmsg[".$msg."]n";
- }
- echo $msg;
- return @file_put_contents('copy.log', $msg, FILE_APPEND);
- }
-
- /**
- * Example
- * 1. The array parameter of $src needs to be modified; 2. The third parameter of _copy_move can be modified to test the move/copy operation respectively
- *
- */
- $src = array('img', 'min', 'phpinfo.php');
- $dst = 'test';
- var_dump(_copy_move($src, $dst , 'copy'));
-
- /*end of php*/
Copy code
|