php sku实现
PHP 实现 SKU 的方法
SKU(Stock Keeping Unit)是库存管理中的唯一标识符,用于区分不同商品或商品变体。以下是几种常见的 PHP 实现方法:
基于商品属性的 SKU 生成
通过商品的基本属性(如分类、颜色、尺寸等)组合生成 SKU:
function generateSku($category, $color, $size) {
$prefix = substr(strtoupper($category), 0, 3);
$colorCode = substr(strtoupper($color), 0, 2);
$sizeCode = str_pad($size, 2, '0', STR_PAD_LEFT);
return $prefix . '-' . $colorCode . '-' . $sizeCode;
}
// 示例:生成 T 恤的 SKU
$sku = generateSku('T-Shirt', 'Blue', 'L'); // 输出 TSH-BL-L
使用数据库自增 ID
结合数据库自增 ID 生成唯一 SKU:
// 假设 $productId 是数据库中的自增 ID
function generateSkuFromId($productId, $prefix = 'ITEM') {
return $prefix . str_pad($productId, 6, '0', STR_PAD_LEFT);
}
$sku = generateSkuFromId(123); // 输出 ITEM000123
哈希算法生成 SKU
使用哈希函数(如 MD5 或 SHA1)生成唯一 SKU:
function generateHashSku($productName, $timestamp) {
$hash = substr(md5($productName . $timestamp), 0, 8);
return strtoupper($hash);
}
$sku = generateHashSku('Blue Jeans', time()); // 输出类似 3A5B7D9F
组合多种属性的 SKU
结合多种属性生成更复杂的 SKU:
function generateComplexSku($brand, $model, $year, $uniqueId) {
$brandCode = substr(strtoupper($brand), 0, 2);
$modelCode = substr(strtoupper($model), 0, 3);
return $brandCode . $modelCode . $year . '-' . $uniqueId;
}
$sku = generateComplexSku('Nike', 'AirMax', '23', '001'); // 输出 NIAIR23-001
数据库存储和验证
确保生成的 SKU 在数据库中唯一:
function isSkuUnique($sku, $pdo) {
$stmt = $pdo->prepare("SELECT COUNT(*) FROM products WHERE sku = ?");
$stmt->execute([$sku]);
return $stmt->fetchColumn() == 0;
}
// 使用示例
$sku = 'TSH-BL-L';
if (isSkuUnique($sku, $pdo)) {
// SKU 可用
} else {
// SKU 已存在
}
SKU 生成器类
封装为可重用的类:
class SkuGenerator {
private $prefix;
private $sequence = 0;
public function __construct($prefix) {
$this->prefix = strtoupper($prefix);
}
public function generate() {
$this->sequence++;
return $this->prefix . str_pad($this->sequence, 6, '0', STR_PAD_LEFT);
}
}
// 使用示例
$generator = new SkuGenerator('PROD');
$sku1 = $generator->generate(); // PROD000001
$sku2 = $generator->generate(); // PROD000002
注意事项
- SKU 应尽可能简洁且易于识别
- 避免使用特殊字符,只使用字母、数字和短横线
- 确保生成的 SKU 在系统中唯一
- 考虑未来扩展性,避免过于复杂的生成逻辑
- 对于大型系统,可以考虑使用专门的 SKU 服务或微服务
以上方法可以根据实际业务需求进行组合或调整,以满足不同的库存管理需求。







