Class yii\gii\CodeFile

Inheritanceyii\gii\CodeFile » yii\base\BaseObject
Available since extension's version2.0
Source Code https://github.com/yiisoft/yii2-gii/blob/master/src/CodeFile.php

CodeFile represents a code file to be generated.

Public Properties

Hide inherited properties

Property Type Description Defined By
$content string The newly generated code content yii\gii\CodeFile
$id string An ID that uniquely identifies this code file. yii\gii\CodeFile
$operation string The operation to be performed. yii\gii\CodeFile
$path string The file path that the new code should be saved to. yii\gii\CodeFile
$relativePath string The code file path relative to the application base path. yii\gii\CodeFile
$type string The code file extension (e.g. php, txt). yii\gii\CodeFile

Public Methods

Hide inherited methods

Method Description Defined By
__construct() Constructor. yii\gii\CodeFile
diff() Returns diff or false if it cannot be calculated yii\gii\CodeFile
getRelativePath() yii\gii\CodeFile
getType() yii\gii\CodeFile
preview() Returns preview or false if it cannot be rendered yii\gii\CodeFile
save() Saves the code into the file specified by $path. yii\gii\CodeFile

Constants

Hide inherited constants

Constant Value Description Defined By
OP_CREATE 'create' The code file is new. yii\gii\CodeFile
OP_OVERWRITE 'overwrite' The code file already exists, and the new one may need to overwrite it. yii\gii\CodeFile
OP_SKIP 'skip' The new code file and the existing one are identical. yii\gii\CodeFile

Property Details

Hide inherited properties

$content public property

The newly generated code content

public string $content null
$id public property

An ID that uniquely identifies this code file.

public string $id null
$operation public property

The operation to be performed. This can be OP_CREATE, OP_OVERWRITE or OP_SKIP.

public string $operation null
$path public property

The file path that the new code should be saved to.

public string $path null
$relativePath public property

The code file path relative to the application base path.

public string $relativePath null
$type public property

The code file extension (e.g. php, txt).

public string $type null

Method Details

Hide inherited methods

__construct() public method

Constructor.

public void __construct ( $path, $content, $config = [] )
$path string

The file path that the new code should be saved to.

$content string

The newly generated code content.

$config array

Name-value pairs that will be used to initialize the object properties

                public function __construct($path, $content, $config = [])
{
    parent::__construct($config);
    $this->path = strtr($path, '/\\', DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR);
    $this->content = $content;
    $this->id = md5($this->path);
    if (is_file($path)) {
        $this->operation = file_get_contents($path) === $content ? self::OP_SKIP : self::OP_OVERWRITE;
    } else {
        $this->operation = self::OP_CREATE;
    }
}

            
diff() public method

Returns diff or false if it cannot be calculated

public boolean|string diff ( )

                public function diff()
{
    $type = strtolower($this->getType());
    if (in_array($type, ['jpg', 'gif', 'png', 'exe'])) {
        return false;
    } elseif ($this->operation === self::OP_OVERWRITE) {
        return $this->renderDiff(file($this->path), $this->content);
    }
    return '';
}

            
getRelativePath() public method

public string getRelativePath ( )
return string

The code file path relative to the application base path.

                public function getRelativePath()
{
    if (strpos($this->path, Yii::$app->basePath) === 0) {
        return substr($this->path, strlen(Yii::$app->basePath) + 1);
    }
    return $this->path;
}

            
getType() public method

public string getType ( )
return string

The code file extension (e.g. php, txt)

                public function getType()
{
    if (($pos = strrpos($this->path, '.')) !== false) {
        return substr($this->path, $pos + 1);
    }
    return 'unknown';
}

            
preview() public method

Returns preview or false if it cannot be rendered

public boolean|string preview ( )

                public function preview()
{
    if (($pos = strrpos($this->path, '.')) !== false) {
        $type = substr($this->path, $pos + 1);
    } else {
        $type = 'unknown';
    }
    if ($type === 'php') {
        return highlight_string($this->content, true);
    } elseif (!in_array($type, ['jpg', 'gif', 'png', 'exe'])) {
        return nl2br(Html::encode($this->content));
    }
    return false;
}

            
save() public method

Saves the code into the file specified by $path.

public string|boolean save ( )
return string|boolean

The error occurred while saving the code file, or true if no error.

                public function save()
{
    $module = isset(Yii::$app->controller) ? Yii::$app->controller->module : null;
    if ($this->operation === self::OP_CREATE) {
        $dir = dirname($this->path);
        if (!is_dir($dir)) {
            if ($module instanceof \yii\gii\Module) {
                $mask = @umask(0);
                $result = @mkdir($dir, $module->newDirMode, true);
                @umask($mask);
            } else {
                $result = @mkdir($dir, 0777, true);
            }
            if (!$result) {
                return "Unable to create the directory '$dir'.";
            }
        }
    }
    if (@file_put_contents($this->path, $this->content) === false) {
        return "Unable to write the file '{$this->path}'.";
    }
    if ($module instanceof \yii\gii\Module) {
        $mask = @umask(0);
        @chmod($this->path, $module->newFileMode);
        @umask($mask);
    }
    return true;
}