TypePHP 编译器 https://swoole.com/aot/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

71 lines
1.5 KiB

<?php
namespace PhpAot\Php\Platform;
/**
* 平台抽象基类
* 定义所有平台必须实现的接口
*/
abstract class PlatformBase
{
/**
* 获取平台名称
*/
abstract public function getName(): string;
/**
* 判断是否为当前平台
*/
abstract public function isCurrent(): bool;
/**
* 获取编译器包含路径参数
*/
abstract public function getIncludeFlags(array $includePaths): string;
/**
* 获取链接器库路径参数
*/
abstract public function getLibraryPathFlags(array $libraryPaths): string;
/**
* 获取链接库参数
*/
abstract public function getLibraryFlags(array $libraries): string;
/**
* 获取文件扩展名
*/
abstract public function getObjectExtension(): string;
/**
* 获取可执行文件扩展名
*/
abstract public function getExecutableExtension(): string;
/**
* 获取动态库扩展名
*/
abstract public function getSharedLibraryExtension(): string;
/**
* 获取路径分隔符
*/
abstract public function getPathSeparator(): string;
/**
* 规范化路径
*/
public function normalizePath(string $path): string
{
return str_replace('/', $this->getPathSeparator(), $path);
}
/**
* 组合路径
*/
public function joinPath(string ...$parts): string
{
return implode($this->getPathSeparator(), $parts);
}
}