Làm thế nào để truyền đối số vào tệp php bằng lệnh drush?


8

Tôi có tập lệnh php nhỏ trong thư mục công cộng của tôi được gọi là sample.php. Tôi chạy tệp này bằng lệnh drush drush Scr sample.php .

Tôi muốn biết làm thế nào để truyền đối số vào tệp php bằng lệnh drush và làm thế nào để lấy đối số trong tệp php?

Câu trả lời:


12

Điều này được giải thích khá độc đáo trong drush topic scripts.

Kịch bản của bạn nên bắt đầu bằng:

#!/usr/bin/env drush
<?php

Sau đó, bạn có thể gọi kịch bản của bạn trực tiếp. Ví dụ: nếu bạn đã lưu tập lệnh của mình trong một tệp được gọi myscript, thì bạn sẽ gọi nó qua:

$ myscript a b --flag=bar

Drush cung cấp một phương thức gọi là drush_shiftcho phép bạn truy cập cùng một lúc:

$first = drush_shift();
$second = drush_shift();

Trong ví dụ trên, $firstsẽ a$secondsẽ b. Bạn có thể truy cập các tùy chọn của bạn thông qua drush_get_option()như bình thường.

$flag = drush_get_option('flag');
$other = drush_get_option('other', 'default');

Trong ví dụ trên, $flagbarother'$ default'.

Lưu ý rằng bạn có thể sử dụng $argvnhư được đề xuất trong câu trả lời khác, nhưng nếu bạn làm điều này, các đối số và tùy chọn của bạn sẽ được trộn lẫn với nhau và bạn sẽ cần phải phân tích chúng. Sử dụng drush_shift()drush_get_option();thuận tiện hơn.


Sử dụng drush_shift()drush_get_option()cũng hoạt động mà không làm cho tập lệnh thực thi trực tiếp. Có lẽ câu trả lời cũng phản ánh điều đó bằng cách đánh dấu phần có liên quan là tùy chọn.
zwirbeltier

0

Trong dòng lệnh php, bạn có thể sử dụng các đối số truyền cho tập lệnh của mình và bên trong tập lệnh của bạn lấy nó bằng cách sử dụng biến $ argv:

kiểm tra cái này: http://php.net/manual/en/reserved.variabled.argv.php


lệnh drush là gì?

1
Lệnh drush là: Drush Scr. Có một cách để làm cho Drush tương thích bằng cách thêm vào tiêu đề tệp tập lệnh #! / Usr / bin / env drush và sử dụng $ arg = drush_shift () để lấy các đối số dưới dạng một mảng
ROOT

bạn có thể cung cấp lệnh mẫu?

Cũng như tóm tắt của tất cả các câu trả lời trước đây và ví dụ thực tế cũng như trả lời cho câu hỏi trên. Bạn có thể chạy một cái gì đó như thế này : drush scr path/to/script --id=15. Và sau đó nếu tập lệnh của bạn bắt đầu bằng #!/usr/bin/env drush(như @ greg_1_anderson đã đề cập) thì bạn có thể nhận được tham số của mình thông qua $id = drush_get_option('id');tập lệnh này.
Vlad Moyseenko

0

Bạn có thể sử dụng một biến môi trường:

MY_FLAG=value drush do_something

Trong php bạn có thể truy xuất biến này:

echo $_SERVER['MY_FLAG'];

0

Giải pháp tích cực:

$_SERVER['argv'][3]

Đồng chí:

drush scr 'testScript.php' field

Bây giờ, $ _SERVER ['argv'] [3] = trường

Thưởng thức!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.